Flask 护身符不工作并重定向到 https://localhost:8000
Flask talisman not working and redirects to https://localhost:8000
我已经 运行在我的开发服务器上使用了 flask-talisman,一切正常。然而,在我用于生产的专用服务器 (Almalinux) 上安装了相同的代码和要求,只需在 app = Flask(__name__) 之后添加 Talisman(app) 就会导致网页无法加载并重定向到 https://localhost:8000。输入域后,我在浏览器上准确得到的错误消息是:
This site can't be reached - localhost refused to connect
我 运行宁 Nginx 1.14.1 与 gunicorn 20.1.0 和主管。服务器已连接到互联网,并且在不使用 Talisman 的情况下,目前 运行 顺利。
我尝试过但没有任何效果的列表
- 暂时停止防火墙
- 重新启动 nginx
- 都试图通过其域和 IP 地址访问该网站 - 重定向到 localhost:8000 仍然存在
- 尝试 运行 其他端口上的应用程序,例如8000 用于测试
- 将代码精简为一个迷你教程,运行在我的开发服务器上运行良好,但在我的生产服务器上运行不佳。所以我认为它不可能是应用程序本身。
- 检查了错误日志,实际上什么也没有,nginx 错误日志或 python 应用程序错误日志中没有。访问日志没有任何异常,就好像一切都检查过了一样。
- 在 Internet 上进行了搜索,但没有找到任何指向正确方向的内容,也没有找到可以解释重定向到 localhost:8000
失败的内容
这是一个精简的教程代码,在我的服务器上应该 运行 但不 运行:
from flask import Flask
from flask_talisman import Talisman
app = Flask(__name__)
Talisman(app)
app.secret_key = 'kungfoo'
@app.route('/', methods=['GET', 'POST'])
def index():
return "Hello Whosebug!"
if __name__ == "__main__":
app.run(debug=True)
嗯,
proxy_set_header X-Forwarded-Proto $scheme;
在服务器位置/{} 块中的 nginx.conf 中发挥作用。这在 gunicorn 文档中有说明,很容易被忽略...
It is recommended to pass protocol information to Gunicorn. Many web
frameworks use this information to generate URLs. Without this
information, the application may mistakenly generate ‘http’ URLs in
‘https’ responses, leading to mixed content warnings or broken
applications.
我已经 运行在我的开发服务器上使用了 flask-talisman,一切正常。然而,在我用于生产的专用服务器 (Almalinux) 上安装了相同的代码和要求,只需在 app = Flask(__name__) 之后添加 Talisman(app) 就会导致网页无法加载并重定向到 https://localhost:8000。输入域后,我在浏览器上准确得到的错误消息是:
This site can't be reached - localhost refused to connect
我 运行宁 Nginx 1.14.1 与 gunicorn 20.1.0 和主管。服务器已连接到互联网,并且在不使用 Talisman 的情况下,目前 运行 顺利。
我尝试过但没有任何效果的列表
- 暂时停止防火墙
- 重新启动 nginx
- 都试图通过其域和 IP 地址访问该网站 - 重定向到 localhost:8000 仍然存在
- 尝试 运行 其他端口上的应用程序,例如8000 用于测试
- 将代码精简为一个迷你教程,运行在我的开发服务器上运行良好,但在我的生产服务器上运行不佳。所以我认为它不可能是应用程序本身。
- 检查了错误日志,实际上什么也没有,nginx 错误日志或 python 应用程序错误日志中没有。访问日志没有任何异常,就好像一切都检查过了一样。
- 在 Internet 上进行了搜索,但没有找到任何指向正确方向的内容,也没有找到可以解释重定向到 localhost:8000 失败的内容
这是一个精简的教程代码,在我的服务器上应该 运行 但不 运行:
from flask import Flask
from flask_talisman import Talisman
app = Flask(__name__)
Talisman(app)
app.secret_key = 'kungfoo'
@app.route('/', methods=['GET', 'POST'])
def index():
return "Hello Whosebug!"
if __name__ == "__main__":
app.run(debug=True)
嗯,
proxy_set_header X-Forwarded-Proto $scheme;
在服务器位置/{} 块中的 nginx.conf 中发挥作用。这在 gunicorn 文档中有说明,很容易被忽略...
It is recommended to pass protocol information to Gunicorn. Many web frameworks use this information to generate URLs. Without this information, the application may mistakenly generate ‘http’ URLs in ‘https’ responses, leading to mixed content warnings or broken applications.