)与gunricorn + nginx错误

我的烧瓶应用程序中的重定向(url_for)函数有问题。

任何重定向(url_for(“index”))行将应用程序从domain.com/app重定向到ip-addr / app ,其中ip-addr是我自己的客户端机器ip,而不是服务器的。

这让我感到非常困惑,我不知道究竟发生了什么问题,因为它只发生在服务器上,而不是任何本地测试。

细节:

我正在使用http://flask.pocoo.org/snippets/35/发现的反向代理设置。 我的nginx配置是这样设置的

location /app {
                proxy_set_header X-Script-Name /app;
                proxy_set_header Host $http_host;
                proxy_set_header X-Forwarded-Host $proxy_add_x_forwarded_for;
                proxy_redirect off;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Scheme $scheme;
                proxy_connect_timeout 60;
                proxy_read_timeout 60;
                proxy_pass http://localhost:8000/;
        }

我有gunicorn运行我的烧瓶应用程序作为一个暴发户的任务。 任何提示?

编辑:

于是我挖了一下,发现这个git报告有类似的问题,https://github.com/omab/django-social-auth/issues/157。

Nginx - Gunicorn通过本地主机服务于Nginx(127.0.0.1:1234)。 不幸的是,当我使用社交平台进行身份验证时,重定向URL social-auth将它们发送到127.0.0.1:1234/twitter/complete,这显然无法通过客户端浏览器解析。

看来我的Flask应用程序没有得到更新其重定向路线的备忘录。


我找到了解决方案。 我必须使用redirect(url_for(location, _external=True))来处理我的所有重定向。

看起来, url_for(x, _external=True)将使用我的nginx proxy_set_header中的所有变量来构造url,而url_for(x)不会这样做。

这适用于服务器和本地开发。

链接地址: http://www.djcxy.com/p/71913.html

上一篇: for) error with gunricorn + nginx

下一篇: Flask flash message no longer works when using ajax