nginx + uwsgi: - 请求的不可用修饰符:0 -

时间:2012-05-25 03:26:41

标签: 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 --

6 个答案:

答案 0 :(得分:101)

原始回答

对于Ubuntu 11.10上的 Python 2 ,使用upstart,安装带有apt-get install uwsgi-plugin-python的uwsgi的python插件,并将plugins = python添加到各个uwsgi应用程序配置解决方案这个问题。

编辑:针对Python 3和Ubuntu 17.10进行了更新

对于Ubuntu 17.10上的 Python 3 ,使用systemd,使用apt-get install uwsgi-plugin-python3安装uwsgi的python插件,并将plugins = python添加到各个uwsgi应用程序配置解决方案中这个问题。

答案 1 :(得分:20)

通过安装uwsgi-plugin-python3插件并向--plugin python3启动命令添加uwsgi选项解决

答案 2 :(得分:16)

我在Ubuntu上从upstart开始使用uwsgi。我通过运行apt-get install uwsgi-plugin-python,然后将plugins=python添加到/ etc / uwsgi / applications-available中的application.ini来解决了这个问题。

答案 3 :(得分:6)

来自http://uwsgi-docs.readthedocs.org/en/latest/ThingsToKnow.html,“要将请求路由到特定插件,Web服务器需要将一个称为修饰符的幻数传递给uWSGI实例。默认情况下,此数字设置为0,映射到Python 。“

我正在使用9作为bash脚本,它正在运行。数字及其含义在此页面上:http://uwsgi-docs.readthedocs.org/en/latest/Protocol.html

在我的nginx配置中:

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

答案 4 :(得分:1)

通过添加的插件行修改您的ini文件。

    [uwsgi]
    plugins         = python3

答案 5 :(得分:0)

我正在将Ubuntu 18.04与Python 3配合使用。以下是我用来使其正常工作的确切配置。

您必须安装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

我的app.py只是一个基本示例:

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/plain')])
    return [b"Hello World!"]

现在从命令行启动uWSGI服务器:

uwsgi uwsgi.ini