【问题标题】:uWSGI vhost problemuWSGI 虚拟主机问题
【发布时间】:2011-06-30 04:47:59
【问题描述】:

uWSGI 配置

[uwsgi]
socket = /tmp/uwsgi.sock
chmod-socket = 666
processes = 1
master = true
vhost = true
no-site = true

Nginx 配置

server {
    listen       80;
    server_name  www.site1.com;

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/tmp/uwsgi.sock;
        uwsgi_param UWSGI_PYHOME /var/virtualenvs/site1;
        uwsgi_param UWSGI_CHDIR /var/www/site1;
        uwsgi_param UWSGI_SCRIPT wsgi;
    }
}

server {
    listen       80;
    server_name  www.site2.com;

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/tmp/uwsgi.sock;
        uwsgi_param UWSGI_PYHOME /var/virtualenvs/site2;
        uwsgi_param UWSGI_CHDIR /var/www/site2;
        uwsgi_param UWSGI_SCRIPT wsgi;
    }
}

无论我先点击哪个站点,它都会卡住显示,所以如果我先转到站点 2,我将永远看不到站点 1。关于为什么 uWSGI 虚拟主机设置似乎不起作用的任何想法?

【问题讨论】:

    标签: python nginx wsgi uwsgi


    【解决方案1】:

    如果你想使用 TCP 连接或者构建没有 uwsgi_pass 支持的 nginx:

    nginx 配置:

    location / {
        proxy_pass http://127.0.0.1:8010/;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    

    uwsgi ini 文件:

    [uwsgi]
    # set the http port
    http = :8010
    

    【讨论】:

      【解决方案2】:

      问题最终是使用 INI 配置文件导致 uWSGI 以单解释器模式运行。 XML 中完全相同的配置允许一切正常工作。 uWSGI 开发人员在未来的版本中不会出现这种情况。

      【讨论】:

        【解决方案3】:

        改用 TCP 套接字怎么样?

        [uwsgi]
        socket = 127.0.0.1:3031
        processes = 1
        master = true
        vhost = true
        no-site = true
        

        nginx 配置

        server {
            listen       80;
            server_name  www.site1.com;
        
            location / {
                include uwsgi_params;
                uwsgi_pass 127.0.0.1:3031;
                uwsgi_param UWSGI_PYHOME /var/virtualenvs/site1;
                uwsgi_param UWSGI_CHDIR /var/www/site1;
                uwsgi_param UWSGI_SCRIPT wsgi;
            }
        }
        
        server {
            listen       80;
            server_name  www.site2.com;
        
            location / {
                include uwsgi_params;
                uwsgi_pass 127.0.0.1:3031;
                uwsgi_param UWSGI_PYHOME /var/virtualenvs/site2;
                uwsgi_param UWSGI_CHDIR /var/www/site2;
                uwsgi_param UWSGI_SCRIPT wsgi;
            }
        }
        

        【讨论】:

          【解决方案4】:

          在这里 http://wiki.nginx.org/HttpUwsgiModuleMultipleDynamicApplications 你可以找到示例,如何通过单个上游设置多个 uWSGI 应用程序。

          【讨论】:

            猜你喜欢
            • 2011-04-24
            • 2015-10-06
            • 2011-05-20
            • 2012-02-27
            • 2012-11-16
            • 1970-01-01
            • 2010-10-28
            • 2012-10-29
            • 2016-06-30
            相关资源
            最近更新 更多