代理服务器的Flask OpenID问题

代理服务器的Flask OpenID问题,openid,flask,Openid,Flask,所有-我在尝试部署使用Flask OpenID扩展的站点时遇到问题。在localhost上,我在完整登录->登录后循环中没有任何问题-但是在我的生产服务器上,它在Flask应用程序前面运行Nginx代理(与Gunicorn一起运行),我在openid.realm和openid.return\u中遇到错误,返回到我连接到的任何提供商的响应参数 基本上,realm和return_to指向我的下游Flask应用程序,而不是代理服务器。例如,对于http://www.foo.com/login/Flas

所有-我在尝试部署使用Flask OpenID扩展的站点时遇到问题。在localhost上,我在完整登录->登录后循环中没有任何问题-但是在我的生产服务器上,它在Flask应用程序前面运行Nginx代理(与Gunicorn一起运行),我在openid.realm和openid.return\u中遇到错误,返回到我连接到的任何提供商的响应参数

基本上,realm和return_to指向我的下游Flask应用程序,而不是代理服务器。例如,对于
http://www.foo.com/login/
Flask OpenID机器使提供者成为目标
http://127.0.0.1:8000/login/?next=/login/
,它是运行my Flask应用程序的本地主机和端口


是否有任何方法可以控制此行为并使Flask OpenID通过代理服务器正确重定向?

听起来您的代理服务器没有传递主机头,使用nginx您可以使用
proxy\u set\u header HOST$HOST在您的位置指令中

您可能还需要查看设置和X-Forwarded-Proto头,以便正确读取实际的客户端IP和协议。Werkzeug提供了一个帮助,在,
请求中有一个详细的示例

这里有一个更完整的nginx位置指令:

location / {
    proxy_pass  http://localhost:8000/;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

谢谢Daz,我今晚会查出来的-同时,我刚刚破解了Flask OpenID并硬编码了我需要的url,而不是使用request.host\u url。。。它很难看,这听起来好多了。:)