Vít*_*sta 7 cloudflare google-cloud-platform google-kubernetes-engine
我的应用程序结构使用 GKE 和 CloudFlare。它看起来像这样:
CloudFlare -> GKE -> Ingress -> My app running nginx
我在 CloudFlare 中使用了灵活的 SSL,所以只有用户和 CloudFlare 之间的连接使用 HTTPS,其余的都使用 HTTP。我知道的CloudFlare设置X-Forwarded-Proto到https在这种情况下,但是当我看到我的nginx的应用程序正在接收头,它得到X-Forwarded-Proto: http。
我很确定这发生在 GKE 的负载均衡器和 Ingress 之间,因为我可以看到CF-Visitor: {"scheme": "https"}CloudFlare 配置的标头设置为 HTTPS。我的理解是,这意味着 CloudFlare 确实设置X-Forwarded-Proto为https,但在此过程中它被覆盖了。
不幸的是,我无法从 GKE 负载均衡器获取标头日志(似乎他们根本不记录X-Forwarded-*标头),所以我无法 100% 确认 CloudFlare 实际上正在设置标头,但我会如果不是,那就太惊讶了。
如果这是真的,Google Cloud 将X-Forwarded-Proto使用http. 我怎样才能避免这样做?
编辑:我在https://cloud.google.com/community/tutorials/nginx-ingress-gke 之后配置了 nginx 入口而不是 gce ,并且X-Forwarded-Proto设置https为预期。这是另一个信号,表明它gce是覆盖X-Forwarded-Proto标头的入口控制器。
小智 1
如本文所述,Cloudflare 附加一个 X-Forwarded-Proto 标头,该标头可以是 HTTP 或 HTTPS,具体取决于用户访问站点所使用的协议。如果您认为 X-Forwarded-Proto 的值应该保留,但已被 GCLB 更改,我建议您在Google 问题跟踪器上为此打开一个功能请求。
| 归档时间: |
|
| 查看次数: |
2231 次 |
| 最近记录: |