具有特定端口的nginx上的多个应用程序

时间:2015-03-10 09:18:14

标签: django nginx port gunicorn

我想在一台服务器上制作许多django / gunicorn应用程序。每个应用程序都在侦听一个特定端口我的nginx conf就像:

upstream my_app_2318 {
       server unix:/tmp/gunicorn-2318.sock    fail_timeout=10s
}
       server {
           listen                *:2318;
           server_name           example.com;

           index  index.html index.htm index.php;

           access_log            /opt/2318/logs/nginx_access.log combined;
           error_log             /opt/2318/logs/nginx_error.log;

           location / {
               proxy_pass            http://my_app_2318;
               proxy_read_timeout    90;
               proxy_connect_timeout 90;
               proxy_redirect        off;
           }
}

此配置适用于GET请求(当我访问example.com:2318/my-url时),但任何POST请求(提交表单)都将我重定向到80端口(example.com/my-new-url)。

我的conf有什么问题?

由于

1 个答案:

答案 0 :(得分:1)

我有解决方案。问题出在标题位置。

我需要像这样使用proxy_redirect标头。

upstream my_app_2318 {
   server unix:/tmp/gunicorn-2318.sock    fail_timeout=10s
}
   server {
       listen                *:2318;
       server_name           example.com;

       index  index.html index.htm index.php;

       access_log            /opt/2318/logs/nginx_access.log combined;
       error_log             /opt/2318/logs/nginx_error.log;

       location / {
           proxy_pass            http://my_app_2318;
           proxy_redirect        http://example.com/ http://example.com:2318/;
           proxy_read_timeout    90;
           proxy_connect_timeout 90;
       }
}