Nginx转发由uWSGI托管的Flask程序
1.预设的目录结构
│ .gitignore │ README.en.md │ README.md │ txt.txt │ ├─api_invcloud │ mid.py │ ├─bin │ run.sh │ uwsgi.ini.default │ └─logs
mid.py是入口文件,应用定义为:
app = Flask(__name__)
2.uwsgi.ini配置
[uwsgi] http = 127.0.0.1:9999 chdir = ../api_invcloud/ wsgi-file = mid.py callable = app processes = 4 threads = 2 py-autoreload = 1 pidfile=uwsgi.pid vacuum = true # log setting disable-logging = false daemonize = ../logs/uwsgi.log
3.Nginx转发配置
upstream uwsgi_server{ server 127.0.0.1:9999; # 如果有多个服务,可以罗列在此当作负载均衡节点,n表示权重 # server 127.0.0.1:9999 weight=n; } server { location /test { proxy_pass http://uwsgi_server; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_max_temp_file_size 0; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } }
PS:
1.如果Python程序作为目录形式转发,可以将目录配置在全站配置之前;如果是全站转发,可以将静态资源目录独立出来,放在全站配置之前配置。
2.第一次通过Nginx访问如果发生500错误,可以尝试直接通过python运行入口文件,看看是否可以正常启动;或者通过 tail filename.log -f 的形式来查看uwsgi的日志。
3.用windows的,放弃挣扎吧。uWSGI无法在Windows中安装,直接会提示OS错误。Windows中整合IIS与Python,尝试使用wfastcgi。
曾经我以为我是个程序员攻城狮,,现在我发现,必须要要前面加上“广告公司”四字。