nginx+;uwsgi:--请求的修改器不可用:0--

nginx+;uwsgi:--请求的修改器不可用:0--,nginx,uwsgi,ubuntu-12.04,Nginx,Uwsgi,Ubuntu 12.04,Ubuntu 12.04,nginx 1.2.0,uwsgi 1.0.3 我使用以下命令启动uwsgi: uwsgi -s 127.0.0.1:9010 -M -t 30 -A 4 -p 4 -d /var/log/uwsgi.log 对于每个请求,nginx都会使用502进行回复,而uwsgi会写入以下日志行: -- unavailable modifier requested: 0 -- 通过安装uwsgi-plugin-python3插件并向uwsgistart命令添加-plugin-

Ubuntu 12.04,nginx 1.2.0,uwsgi 1.0.3

我使用以下命令启动uwsgi:

uwsgi -s 127.0.0.1:9010 -M -t 30 -A 4 -p 4 -d /var/log/uwsgi.log
对于每个请求,nginx都会使用502进行回复,而uwsgi会写入以下日志行:

-- unavailable modifier requested: 0 --

通过安装
uwsgi-plugin-python3
插件并向
uwsgi
start命令添加
-plugin-python3
选项来解决此问题。我通过运行
apt get install uwsgi plugin python
,然后在/etc/uwsgi/applications available中向我的application.ini添加
plugins=python
解决了这个问题。

原始答案

对于Ubuntu 11.10上的Python2,使用
upstart
,使用
apt get install uWSGI plugin Python
安装
uWSGI
的Python插件,如果使用ini文件配置
uWSGI
应用程序,则将
plugins=Python
添加到
[uWSGI]
部分,它应该可以解决此问题

编辑:为Python 3和Ubuntu 17.10更新

对于Ubuntu 17.10上的Python 3,使用
systemd
,使用
apt get install uWSGI-plugin-python3
安装
uWSGI
的Python插件,如果您使用ini文件配置
uWSGI
应用程序,则将
plugins=Python
添加到
[uWSGI]
部分,它应该可以解决此问题

有关开始使用
python
/
uWSGI
应用程序的更多信息,包括如何使用
ini
文件配置它们,请查看,“要将请求路由到特定插件,Web服务器需要向uWSGI实例传递一个称为修饰符的神奇数字。默认情况下,此数字设置为0,映射到Python。”

我正在使用9作为bash脚本,它正在工作。数字及其含义在本页上:

在我的nginx配置中:

location ~ .cgi$ {
    include uwsgi_params;
    uwsgi_modifier1 9;
    uwsgi_pass 127.0.0.1:3031;
}

我正在使用Ubuntu18.04和Python3。下面是我用来让它工作的确切配置

必须安装Python 3 uWSGI插件:

apt install uwsgi-plugin-python3
Nginx站点配置应指向uWSGI套接字。请确保端口与后面步骤中的配置匹配

    location / {
        uwsgi_pass 127.0.0.1:9090;
        include uwsgi_params;
    }
重新加载Nginx配置以反映您刚才所做的更改:

systemctl reload nginx
您可以使用命令行参数或ini文件进行配置。我创建了
uwsgi.ini
。请确保套接字地址与您的nginx配置匹配

[uwsgi]
socket = 127.0.0.1:9090
chdir = /var/www
processes = 4
threads = 2
plugins = python3
wsgi-file = /var/www/app.py
My app.py只有一个基本示例:

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/plain')])
    return [b"Hello World!"]
现在从命令行启动uWSGI服务器:

uwsgi uwsgi.ini

通过添加插件行修改ini文件

    [uwsgi]
    plugins         = python3

在Ubuntu上,uwsgi是作为一项服务启动的:
服务uwsgi start
。请写出详细的答案,并用@SHaKie answer将问题设置为已解决的问题(yum插件安装+uwsgi配置更改)刚刚在CentOS7上为我工作。我一直在绞尽脑汁,无法解决这个问题。谢谢!alpine linux呢?我不知道“个人uwsgi应用程序配置”的文件在哪里“.你能说得更具体些吗?这是我的uwsgi应用程序的ini文件吗?/etc/something文件?也许粘贴一个什么样的文件内容看起来像这样我知道你指的是什么?文件的典型位置是什么?我已经有好长一段时间没有担心这个问题了(事实上已经有7年了),但我指的确实是
uwsgi
app的ini文件。正如您可能想象的那样,我不再有任何配置文件,但通过快速的谷歌搜索,这(似乎)很方便。至于ini文件的位置,它实际上几乎可以存在于任何地方。如果你特别喜欢冒险,你甚至可以从世界上任何地方的另一台web服务器上提供ini文件,比如:
uwsgi--inihttp://uwsgi.it/configs/myapp.ini