Flask 正在生产中,带有 Caddy 和 Waitress url_for 重定向到本地主机

Sté*_*ane 4 python wsgi flask waitress caddy

我有一个在 Windows EC2 实例上运行的 Flask 服务器。

我需要使用https协议,所以我的设置如下:

  • 我有一个 Caddy 服务器
  • 我使用 Waitress 来运行我的 Flask 应用程序

这是我的 Caddy 配置:

example.com:443{
    proxy / 127.0.0.1:8080
    tls me@example.com
}
Run Code Online (Sandbox Code Playgroud)

一切工作正常,除了在我的application.py文件中,当我这样做时:

return redirect(url_for('test', filename=filename))
Run Code Online (Sandbox Code Playgroud)

我的网络浏览器重定向我:

结果与_external=True

但是在模板页面上,例如使用https://example.com/test2呈现render_template( "test2.html"),如果我有链接,<a href="{{ url_for('index') }}" />则生成的 HTML 很好: https: //example.com/

现在我已经在 application.py 中硬编码了我的网址,但这不是我想要保留它的方式......

Sté*_*ane 5

我已经将我的 Caddyfile 更新为这个,现在它工作得很好!

example.com:443 {
    proxy / 127.0.0.1:8080 { 
        header_upstream Host {host} 
        header_upstream X-Real-IP {remote} 
        header_upstream X-Forwarded-For {remote} 
        websocket 
    }
        tls me@example.com
}
Run Code Online (Sandbox Code Playgroud)

这个答案给了我一个提示。

这个答案帮助我构建了 Caddyfile。