我正在使用在Docker容器中运行的Gunicorn服务我的Web应用程序。有没有办法强制我使用HTTPS而不是HTTP?
Dockerfile
FROM ubuntu:latest
RUN apt-get update
RUN apt-get install -y python python-pip git
RUN apt-get install -y nodejs npm
RUN apt-get install -y nginx
RUN ln -s /usr/bin/nodejs /usr/bin/node
RUN pip install gunicorn greenlet gevent
RUN npm install --global bower gulp
COPY /flask/requirements.txt /flask/requirements.txt
COPY /flask/package.json /flask/package.json
COPY /flask/bower.json /flask/bower.json
WORKDIR /flask
RUN pip install -r requirements.txt
RUN npm install
RUN bower install --allow-root
WORKDIR /
COPY /flask /flask
COPY /configurations/production/* /flask/
WORKDIR /flask
RUN gulp build --production
EXPOSE 9000
ENTRYPOINT ["gunicorn", "-c", "gunicorn_config.py", "wsgi:app"]
答案 0 :(得分:2)
在Swisscoms PaaS中,HTTPS在负载均衡器上终止。因此,您不能使用仅将HTTP重定向到HTTPS的简单方法,因为您在应用程序上看到的所有流量都是HTTP。
但是,您可以做的是检查X-Forwarded-Proto HTTP标头,并在标头指出流量通过HTTP服务时返回到HTTPS的重定向。
X-Forwarded-Proto X-Forwarded-Proto标头提供了来自客户端的HTTP请求的方案。如果客户端发出不安全请求(端口80),则方案为HTTP;如果客户端发出安全请求(端口443),则方案为HTTPS。通过检查传入流量的HTTP标头并使用HTTP方案拒绝包含X-Forwarded-Proto的流量,开发人员可以将其应用程序配置为拒绝不安全的请求。
来源:https://docs.developer.swisscom.com/concepts/http-routing.html