我正在使用python应用程序(modoboa),它曾经通过uwsgi-protocol与uwsgi一起提供给nginx。
我现在正在尝试h2o服务器,它不会说uwsgi协议而是http。
所以我试图将uwsgi从使用uwsgi-socket迁移到http-socket,但是uwsgi在我现在的位置抛出了“没有找到python应用程序”的错误。
这是我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/
答案 0 :(得分:2)
如果您在uWSGI配置中明确设置模块,则应删除vhost
和no-default-app
选项。使用该选项集,uWSGI希望从HTTP服务器获取有关该选项的信息,但H2O没有设置任何内容。
此外,除非您确切知道它们的用途,否则用户无法使用可以发送正确标头的服务器进行设置,因此也请从现有的nginx配置中删除它们。您在uWSGI配置中设置了module
。
答案 1 :(得分:0)
我认为你必须在[uwsgi]部分中有以下内容(即uwsgi.ini和nginx.conf中的相同套接字名称)
socket = /tmp/uwsgi-modoboa.sock
chmod-socket = 644
如果644无法正常工作,请尝试666甚至777(请注意共享服务器上具有广泛开放权限的安全问题)