HTTPFound返回的位置标头不包含非标准端口号

时间:2012-06-14 05:30:15

标签: python redirect nginx pyramid gunicorn

我有一个Pyramid应用程序在nginx后面的gunicorn上运行(在Unix套接字上监听)(侦听端口8080)。当Pyramid视图返回HTTPFound(location='/') HTTP响应包含Location: http://example.host/而没有端口号时,用户会收到“无法连接”错误。我无法弄清楚在哪里指定非标准端口号,或者(最好)如何告诉Pyramid在生成Location标头时从请求中提取它。

摘自应用程序配置:

[server:main]
use = egg:gunicorn#main
host = unix:%(here)s/run/server.sock
workers = 4

Nginx配置:

server {
    listen 8080;
    root /path/to/app;
    location / {
        proxy_pass http://unix:/path/to/app/run/server.sock;
        include proxy_params;
    }
    location /static {
        root /path/to/app/static;
    }
}

1 个答案:

答案 0 :(得分:2)

要获取服务器端口,请使用host_port

同样根据rfc2616,您应该在Location标题中发送绝对URI而不是相对URI。