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

ryevplcw  于 2023-08-03  发布在  Nginx
关注(0)|答案(6)|浏览(110)

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

szqfcxe2

szqfcxe21#

原始答案

对于Ubuntu 11.10上的Python 2,使用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 = python3添加到[uwsgi]部分,它应该可以解决此问题。
有关开始使用python/uWSGI应用程序的更多信息,包括如何使用ini文件配置它们,请查看这个方便的guide

lrpiutwd

lrpiutwd2#

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

oo7oh9g9

oo7oh9g93#

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

bnl4lu3b

bnl4lu3b4#

来自http://uwsgi-docs.readthedocs.org/en/latest/ThingsToKnow.html,“为了将请求路由到特定的插件,Web服务器需要向uWSGI示例传递一个称为修饰符的幻数。默认情况下,此数字设置为0,Map到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;
}

字符串

fbcarpbf

fbcarpbf5#

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

[uwsgi]
    plugins         = python3

字符串

yyhrrdl8

yyhrrdl86#

我使用的是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

相关问题