使用 uwsgi 配置 Nginx,使用 python 脚本作为 cgi - 502 Bad Gateway
Posted
技术标签:
【中文标题】使用 uwsgi 配置 Nginx,使用 python 脚本作为 cgi - 502 Bad Gateway【英文标题】:Nginx configuration with uwsgi, with python scripts as cgi - 502 Bad Gateway 【发布时间】:2015-03-17 17:50:31 【问题描述】:我正在尝试设置 uwsgi,它将以 cgi 方式提供 python 文件。使用 nginx 作为代理。
这是我运行 uwsgi "pyApp.py" 的 .ini 文件
[uwsgi]
plugins = cgi
socket = 127.0.0.1:9010
cgi = /=/usr/share/test/
cgi-allowed-ext = .py
cgi-helper = .py=python
我在 /usr/share/test/firstapp.py 有一个文件“firstapp.py” 它的内容是
#!/usr/bin/python
print "Content-type: text/html\n\n"
print "<html><body><h1>It works! Cool!!</h1></body></html>"
我正在使用命令运行 uwsgi 的实例
uwsgi --http :9011 --http-modifier1 9 --ini pyApp.ini --master
我已经使用 nginx 配置了几个虚拟主机。并且其中一个必须指向目录 /usr/share/test/ 当 url 中包含“/cgi-bin/”时。
nginx 配置是 - [也是唯一的默认配置]
server
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/pythonsite.com/html;
index index.html index.htm;
server_name pythonsite.com www.pythonsite.com;
location /
try_files $uri $uri/ =404;
location /cgi-bin
include uwsgi_params;
uwsgi_modifier1 9;
uwsgi_pass 127.0.0.1:9010;
但是当我尝试通过 url 从浏览器访问“cgi”脚本时
http://pythonsite.com/cgi-bin/firstapp.py
默认 URL“pythonsite.com”似乎工作正常,但上面带有“cgi-bin”的 URl 似乎缺少一些东西。 我得到“502 坏网关”。我错过了什么。为了这样使用python脚本?
编辑:
此外,每次我在浏览器中请求 URL http://pythonsite.com/cgi-bin/firstapp.py" 时,uwsgi 服务器实例上都会显示一条日志
-- unavailable modifier requested: 9 --
【问题讨论】:
重新检查其他东西然后再检查 nginx,即测试你自己的 your_ip::9011 和 your_ip:9010 是否有效。现在他们没有,所以你不能把坏消息归咎于 nginx。 是的,它们似乎无法正常工作,但在 uwsgi 日志中,我收到"invalid request block size: 21573 (max 4096)...skip"
for 127.0..0.1:9010 并在浏览器页面上重置连接
@DmitryVerkhoturov 和“127.0.0.1:9011”我在浏览器上收到“内部服务器错误”消息。和 uwsgi 日志为 "--- no python application found, check your startup logs for errors ---"
重新检查,谷歌,重新检查。我从来没有尝试过设置 uwsgi,有像 gunicorn 这样更简单的方法来处理这些事情。奇怪了,为什么你用--http :9011
参数运行uwsgi?
@DmitryVerkhoturov 好吧,即使在删除 --http 之后,它也是一样的.. 我在配置 uwsgi 的方式上遗漏了一些东西。可能是.ini文件的写法,也可能是初始化uwsgi实例的命令的写法。还要弄清楚是什么。任何帮助表示赞赏。
【参考方案1】:
好吧,经过我朋友HD 的大量搜索和帮助后,
我需要使用curl http://uwsgi.it/install | bash -s cgi /tmp/uwsgi
安装cgi,然后使用/tmp/uwsgi 中的新二进制文件运行启动uwsgi 的命令。
【讨论】:
以上是关于使用 uwsgi 配置 Nginx,使用 python 脚本作为 cgi - 502 Bad Gateway的主要内容,如果未能解决你的问题,请参考以下文章
使用 uwsgi 配置 Nginx,使用 python 脚本作为 cgi - 502 Bad Gateway