【问题标题】:Nginx container as a proxy to Flask app container - problem with domain and Flask.redirect() methodNginx 容器作为 Flask 应用程序容器的代理 - 域和 Flask.redirect() 方法的问题
【发布时间】:2021-12-31 12:04:53
【问题描述】:

我在第一个容器中获得了一个 Flask 应用程序,在第二个容器中获得了 NGINX,两者都托管在同一台服务器上。在 NGINX 上,我想要一个代理到第一个容器,它没有暴露端口,因为我希望 NGINX 使用 HTTPS 为应用程序提供服务。我的 nginx.conf 看起来像这样:

http {
        server {
        server_name hostname.domain;
        listen 443 ssl;
        ssl_certificate /hostname_domain.cer;
        ssl_certificate_key /hostname_domain.key;
        location / {
            proxy_pass http://172.17.0.5:80;  # Flask app container IP
        }
    }
}

当我转到https://hostname.domain 时,应用程序运行良好,但是当我触发 Flask 重定向方法时,如下所示:

return redirect(url_for("view.whatever"))

这应该将我重定向到https://hostname.domain/whatever,我被重定向到http://172.17.0.5/whatever。如何解决它以及导致这种行为的原因是什么?感谢您的任何回答!

【问题讨论】:

    标签: python nginx flask jwilder-nginx-proxy


    【解决方案1】:

    感谢this 线程我已通过向 nginx.conf 添加以下选项来解决我的问题:

    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    

    并配置 Flask 应用程序:

    app.config["SERVER_NAME"] = "hostname.domain"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-21
      • 2015-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多