docker运行时,Flask url_为生成http而不是https

docker运行时,Flask url_为生成http而不是https,docker,nginx,flask,Docker,Nginx,Flask,我有一个flask应用程序在docker中运行,并使用Let's Encrypt设置nginx。我添加了proxy\u set\u头X-Forwarded-Proto$方案到我的nginx配置,但是的url\u仍然返回http url而不是https url。但该问题仅在docker中运行时发生 这是我的nginx配置: server { listen 443 ssl default_server; ssl_certificate /etc/letsencrypt/live/ma

我有一个flask应用程序在docker中运行,并使用Let's Encrypt设置nginx。我添加了
proxy\u set\u头X-Forwarded-Proto$方案
到我的nginx配置,但是的
url\u仍然返回http url而不是https url。但该问题仅在docker中运行时发生

这是我的nginx配置:

server {
    listen 443 ssl default_server;
    ssl_certificate /etc/letsencrypt/live/markote.app/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/markote.app/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

    location / {
        proxy_pass http://127.0.0.1:5000;
        proxy_set_header Host $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;
    }
}
和我的docker文件:

FROM python:3.6-slim

WORKDIR /app

ADD . /app

RUN apt update
RUN apt install -y curl sudo gnupg libcairo2-dev
RUN pip install gunicorn
RUN curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
RUN sudo apt-get install -y nodejs

RUN python setup.py install
RUN npm install
RUN npm run build

EXPOSE 5000

CMD [ "gunicorn", "-c", "gunicorn.py", "wsgi:app" ]

如果我运行
gunicorn-c gunicorn.py wsgi:app&
而不是
sudo docker run-d-p 5000:5000 my/repo
url\u可以成功生成https。我错过了什么吗?

我知道已经有一段时间了,但是你可以试试('endpoint','schema='https')的
url

我会试试看。谢谢我刚刚找到了另一个解决办法。
\u schema
属性仅适用于单个链接,但是,如果您不想对每个url执行此操作,则可以创建一个wsgi中间件来设置
wsgi.url\u scheme
属性。看看这段代码,了解如何操作:只需确保在中间件的
\u call\u
函数中添加类似
environ['wsgi.url\u scheme']='https'