【发布时间】:2020-12-04 22:34:09
【问题描述】:
在生产中,我的烧瓶应用程序不是在域根目录下运行,而是在 https://domain:port/app 上运行。 HAproxy 处理此问题并终止 SSL。我想使用烧瓶开发服务器做同样的事情,但遇到url_for 和redirect 的问题。即url_for 不包括/app 和redirect(url_for(...)) 最终重定向到http。
我了解在生产中,uWSGI 配置将SCRIPT_NAME 设置为/app 以使url_for 正常运行。我相信它也可以将wsgi.url_scheme 设置为https,但我不确定。
在运行开发服务器时有什么方法可以设置 WSGI 配置?我见过的所有解决方案都涉及自定义中间件或 ProxyFix 之类的东西,但是我必须做一些 if 切换来确定是否应用这些修复,因为它们是不必要的并且会破坏生产。我希望有一种方法可以通过命令行调用flask run 来使用环境变量配置WSGI 环境,以便开发和生产都使用相同的代码路径。
提前致谢!
【问题讨论】:
-
youtube.com/…这个视频可能对你有帮助
-
我不是烧瓶专家,但url_for 的文档显示您可以将
_external=True,_scheme="https"添加到url_for()调用中。也许这可以解决您的问题? -
我真的不想为了让某些东西在开发中工作而在代码中乱扔额外的参数。我正在寻找相当于 uWSGI 配置的 werkzeug。
标签: python flask reverse-proxy wsgi haproxy