nginx + uwsgi: -- 请求的不可用修饰符:0 --
Posted
技术标签:
【中文标题】nginx + uwsgi: -- 请求的不可用修饰符:0 --【英文标题】:nginx + uwsgi: -- unavailable modifier requested: 0 -- 【发布时间】:2012-05-31 15:55:59 【问题描述】: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 --
【问题讨论】:
在 Ubuntu 上 uwsgi 作为服务启动:service uwsgi start
.
【参考方案1】:
原答案
对于 Ubuntu 11.10 上的 Python 2,使用 upstart
,安装用于 uWSGI
和 apt-get install uwsgi-plugin-python
的 python 插件,如果您使用 ini 文件来配置您的 uWSGI
应用程序,然后将plugins = python
添加到[uwsgi]
部分,它应该可以解决这个问题。
编辑:针对 Python 3 和 Ubuntu 17.10 更新
对于 Ubuntu 17.10 上的 Python 3,使用 systemd
,安装用于 uWSGI
和 apt-get install uwsgi-plugin-python3
的 python 插件,如果您使用 ini 文件来配置您的 uWSGI
应用程序,然后将plugins = python
添加到[uwsgi]
部分,它应该可以解决这个问题。
有关开始使用python
/uWSGI
应用程序的更多信息,包括如何使用ini
文件配置它们,请查看这个方便的guide
【讨论】:
相当于这个(yum 插件安装 + uwsgi 配置更改)在 CentOS7 上对我有用。 一直让我头疼,无法解决这个问题。谢谢! alpine linux怎么样? 我不知道“个人 uwsgi 应用程序配置”的文件在哪里。你可以再详细一点吗?这是我的 uwsgi 应用程序的 ini 文件吗? /etc/something 文件?也许粘贴文件内容的示例,以便我知道您指的是什么?以及文件的典型位置? 我不得不担心这个问题已经有一段时间了(实际上是 7 年),但我确实是指uwsgi
应用程序的 ini 文件。正如您可能想象的那样,我不再有任何配置文件,但快速的谷歌搜索产生了这个(看似)方便的guide。至于 ini 文件的位置,它实际上几乎可以存在于任何地方。如果您特别喜欢冒险,您甚至可以从世界任何地方的另一台 Web 服务器提供该 ini 文件,如下所示:uwsgi --ini http://uwsgi.it/configs/myapp.ini
【参考方案2】:
通过安装uwsgi-plugin-python3
插件并将--plugin python3
选项添加到uwsgi
启动命令解决
【讨论】:
请写出更多详细信息的广泛答案,并将问题设置为使用@SHaKie 答案解决【参考方案3】:我在 Ubuntu 上从新贵开始 uwsgi。我通过运行apt-get install uwsgi-plugin-python
解决了这个问题,然后在/etc/uwsgi/applications-available 中将plugins=python
添加到我的application.ini 中。
【讨论】:
【参考方案4】:来自http://uwsgi-docs.readthedocs.org/en/latest/ThingsToKnow.html,“要将请求路由到特定插件,网络服务器需要将一个称为修饰符的幻数传递给 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;
【讨论】:
【参考方案5】:通过添加插件行修改您的 ini 文件。
[uwsgi]
plugins = python3
【讨论】:
【参考方案6】:我正在使用带有 Python 3 的 Ubuntu 18.04。下面是我用来让它工作的确切配置。
您必须安装 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
【讨论】:
以上是关于nginx + uwsgi: -- 请求的不可用修饰符:0 --的主要内容,如果未能解决你的问题,请参考以下文章