python:从uwsgi移动到http-socket

时间:2016-02-14 19:17:57

标签: python sockets nginx uwsgi

我正在使用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/

2 个答案:

答案 0 :(得分:2)

如果您在uWSGI配置中明确设置模块,则应删除vhostno-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(请注意共享服务器上具有广泛开放权限的安全问题)