【问题标题】:Force HTTPS on Swisscom CloudFoundry在 Swisscom CloudFoundry 上强制使用 HTTPS
【发布时间】:2018-07-17 17:07:31
【问题描述】:

我正在使用在 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"]

【问题讨论】:

  • 请发布您的 docker 文件
  • 使用 Dockerfile 更新

标签: swisscomdev


【解决方案1】:

在 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

【讨论】:

  • 我应该在哪里进行检查和重定向?如果我在 Flask 中这样做,它似乎会导致太多的重定向和崩溃..(也许我只是做错了)
猜你喜欢
  • 2019-11-30
  • 1970-01-01
  • 2019-08-06
  • 2019-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-25
  • 2019-08-29
相关资源
最近更新 更多