HTTPS请求重定向到HTTP(HTTPS request redirected to HTTP)

2019-10-28 20:17发布

我运行一个Gunicorn进入traefik后面。 HTTP是通过traefik重定向到HTTPS,但由于某种原因gunicorn有301指向HTTP应答。 我已经尝试了几乎所有我认识过,并没有发现任何解决办法的选项。 我认为这可能与类似https://stackoverflow.com/a/41488430/3719845 。

下面是我在我进入使用说明:

kubernetes.io/ingress.class: traefik
traefik.ingress.kubernetes.io/frontend-entry-points: http,https
traefik.ingress.kubernetes.io/protocol: http
ingress.kubernetes.io/ssl-redirect: 'true'
traefik.frontend.rule.type: PathPrefix
ingress.kubernetes.io/custom-request-headers: 'x-forwarded-proto:https||x-forwarded-ssl:on||x-forwarded-protocol:ssl'

我不知道的是, x-forwarded ,所以我硬编码它们分别头自动traefik设置。

在gunicorn方面,我使用:

    command:
      - '/usr/local/bin/gunicorn'
    args:
      - '-b'
      - '0.0.0.0:8080'
      - '--log-level'
      - 'debug'
      - '--access-logfile'
      - '-'
      - '--error-logfile'
      - '-'
      - '--forwarded-allow-ips'
      - '0.0.0.0'
      - '--proxy-allow-from'
      - '0.0.0.0'
      - '--proxy-protocol'
      - 'myapp'

这里同样的事情,我一直在玩的选项,但似乎没有任何改变。

Answer 1:

试试这个为你的头:

ingress.kubernetes.io/ssl-proxy-headers: "X-Forwarded-Proto: https"
ingress.kubernetes.io/ssl-redirect: "true"

(这是用于AWS ELB一个配置,我不知道你的具体配置导致它)

从那里,你可能有一个gunicorn问题不尊重的X转发 - 协议报头和将要检查其文档。



文章来源: HTTPS request redirected to HTTP