python:从 uwsgi 转移到 http-socket
python: moving from uwsgi to http-socket
我正在使用一个 python 应用程序 (modoboa),它曾经通过 uwsgi-protocol 与 uwsgi 一起提供给 nginx。
我现在正在试用 h2o 服务器,它不使用 uwsgi 协议,而是使用 http。
所以我正在尝试将 uwsgi 从使用 uwsgi-socket 迁移到 http-socket,但是 uwsgi 在我现在的位置抛出错误 "no python application found"。
这是我的 nginx.conf
:
location /modoboa/ {
root /usr/local/www/modoboa_default/modoboa_default;
include uwsgi_params;
uwsgi_pass unix:/tmp/uwsgi-modoboa.sock;
uwsgi_param UWSGI_SCRIPT modoboa_default.wsgi:application;
uwsgi_param UWSGI_SCHEME https;
uwsgi_param SCRIPT_NAME /modoboa;
uwsgi_modifier1 30;
}
这是我的 uwsgi.ini
:
[uwsgi]
chdir = /usr/local/www/modoboa_default
module = modoboa_default.wsgi:application
master = true
harakiri = 60
processes = 4
vhost = true
no-default-app = true
这是我现在的uwsgi.ini
:
[uwsgi]
chdir = /usr/local/www/modoboa_default
module = modoboa_default.wsgi:application
master = true
harakiri = 60
processes = 4
vhost = true
no-default-app = true
http-socket=/tmp/uwsgi-http.sock
enable-threads=true
buffer-size=60000
http-keepalive=3000
我想我的 uwsgi.ini
中遗漏了一些东西
更新
这是我目前所拥有的
h2o.conf
"/modoboa/":
proxy.reverse.url: "http://[unix:/tmp/uwsgi-http.sock]/"
proxy.timeout.keepalive: 1000
proxy.preserve-host: ON
"/modoboa/sitestatic/":
file.dir: /usr/local/www/modoboa_default/sitestatic/
"/modoboa/media/":
file.dir: /usr/local/www/modoboa_default/media/
uwsgi.ini
[uwsgi]
chdir = /usr/local/www/modoboa_default
harakiri = 60
processes = 4
http-socket = /tmp/uwsgi-http.sock
enable-threads = true
mount = /modoboa=modoboa_default.wsgi:application
manage-script-name = true
这适用于起始页。
但是,当我登录时,我将被重定向到 example.com/accounts/login/
而不是 example.com/modoboa/accounts/login/
如果你在 uWSGI 配置中显式设置模块,你应该删除 vhost
和 no-default-app
选项。设置好这些选项后,uWSGI 期望从 HTTP 服务器获取相关信息,但是 H2O 没有设置任何东西。
此外,除非您确切知道它们的用途,否则使用可以发送正确 headers 的服务器设置是不安全的,因此也请从您现有的 nginx 配置中删除它们。您在 uWSGI 配置中设置了 module
。
我认为您必须在 [uwsgi] 部分中包含以下内容(即 uwsgi.ini 和 nginx.conf 中的相同套接字名称)
socket = /tmp/uwsgi-modoboa.sock
chmod-socket = 644
如果 644 不起作用,请尝试 666 甚至 777(注意共享服务器上广泛开放权限的安全问题)
我正在使用一个 python 应用程序 (modoboa),它曾经通过 uwsgi-protocol 与 uwsgi 一起提供给 nginx。
我现在正在试用 h2o 服务器,它不使用 uwsgi 协议,而是使用 http。
所以我正在尝试将 uwsgi 从使用 uwsgi-socket 迁移到 http-socket,但是 uwsgi 在我现在的位置抛出错误 "no python application found"。
这是我的 nginx.conf
:
location /modoboa/ {
root /usr/local/www/modoboa_default/modoboa_default;
include uwsgi_params;
uwsgi_pass unix:/tmp/uwsgi-modoboa.sock;
uwsgi_param UWSGI_SCRIPT modoboa_default.wsgi:application;
uwsgi_param UWSGI_SCHEME https;
uwsgi_param SCRIPT_NAME /modoboa;
uwsgi_modifier1 30;
}
这是我的 uwsgi.ini
:
[uwsgi]
chdir = /usr/local/www/modoboa_default
module = modoboa_default.wsgi:application
master = true
harakiri = 60
processes = 4
vhost = true
no-default-app = true
这是我现在的uwsgi.ini
:
[uwsgi]
chdir = /usr/local/www/modoboa_default
module = modoboa_default.wsgi:application
master = true
harakiri = 60
processes = 4
vhost = true
no-default-app = true
http-socket=/tmp/uwsgi-http.sock
enable-threads=true
buffer-size=60000
http-keepalive=3000
我想我的 uwsgi.ini
中遗漏了一些东西更新
这是我目前所拥有的
h2o.conf
"/modoboa/":
proxy.reverse.url: "http://[unix:/tmp/uwsgi-http.sock]/"
proxy.timeout.keepalive: 1000
proxy.preserve-host: ON
"/modoboa/sitestatic/":
file.dir: /usr/local/www/modoboa_default/sitestatic/
"/modoboa/media/":
file.dir: /usr/local/www/modoboa_default/media/
uwsgi.ini
[uwsgi]
chdir = /usr/local/www/modoboa_default
harakiri = 60
processes = 4
http-socket = /tmp/uwsgi-http.sock
enable-threads = true
mount = /modoboa=modoboa_default.wsgi:application
manage-script-name = true
这适用于起始页。
但是,当我登录时,我将被重定向到 example.com/accounts/login/
而不是 example.com/modoboa/accounts/login/
如果你在 uWSGI 配置中显式设置模块,你应该删除 vhost
和 no-default-app
选项。设置好这些选项后,uWSGI 期望从 HTTP 服务器获取相关信息,但是 H2O 没有设置任何东西。
此外,除非您确切知道它们的用途,否则使用可以发送正确 headers 的服务器设置是不安全的,因此也请从您现有的 nginx 配置中删除它们。您在 uWSGI 配置中设置了 module
。
我认为您必须在 [uwsgi] 部分中包含以下内容(即 uwsgi.ini 和 nginx.conf 中的相同套接字名称)
socket = /tmp/uwsgi-modoboa.sock
chmod-socket = 644
如果 644 不起作用,请尝试 666 甚至 777(注意共享服务器上广泛开放权限的安全问题)