Nginx

使用 Nginx 配置 uwsgi,使用 python 腳本作為 cgi - 502 Bad Gateway

  • March 17, 2015

這是我執行 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 配置是 -

$$ also the only default one among the others $$

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 --

編輯2:

在 uwsgi 日誌中,我得到 127.0..0.1:9010 的“無效請求塊大小:21573(最大 4096)…跳過”,並且在瀏覽器頁面上重置了連接

對於“127.0.0.1:9011/”;我在瀏覽器上收到“內部伺服器錯誤”消息。和 uwsgi 記錄為"--- no python application found, check your startup logs for errors ---"

可能出了什麼問題?:|

是否安裝了 CGI 外掛?

在 uWSGI 上執行 CGI 腳本

使用相同的配置,我可以重現錯誤,但在安裝 CGI 外掛並使用 /tmp/uwsgi 中的新二進製文件執行後,它可以工作:

curl http://uwsgi.it/install | bash -s cgi /tmp/uwsgi

引用自:https://serverfault.com/questions/676233