【发布时间】:2016-11-11 13:41:11
【问题描述】:
我在我的 Google Cloud Platform HTTP 负载平衡器上设置了端点终止设置,并将 HTTPS 设置为与我的后端通信的协议。
这意味着所有请求,HTTP 或 HTTPS,都是 HTTPS 到 apache。这个问题是HTTPS 环境变量设置为on,即使X-Forwarded-Proto 设置为http。
我所有的研究和测试都只指向相反的情况(当X-Forwarded-Proto 是https 时,通过SetEnvIf X-Forwarded-Proto https HTTPS=on 规则将HTTPS 设置为on)。
但是,当X-Forwarded-Proto 是http 时,我需要取消设置HTTPS。
我尝试设置SSLOptions -StdEnvVars 以及SetEnvIf、SetEnv 和UnsetEnv 的许多组合。通过 mod_rewrite 设置它对我来说不是一个选项(我不知道它是否会起作用)。关于关闭StdEnvVars 的一个有趣的注意事项是,即使它关闭,所有与 SSL 相关的变量都消失了,除了 HTTPS,我可以确认在我的任何配置文件中都没有设置它。
编辑:
我在服务器配置、vhost 和 htaccess 中尝试过的一些指令示例:
SetEnvIf X-Forwarded-Proto http HTTPS=Off
SetEnvIf X-Forwarded-Proto http HTTPS=0
SetEnvIf X-Forwarded-Proto http !HTTPS
SetEnv HTTPS Off
SetEnv HTTPS 0
SetEnv HTTPS
UnsetEnv HTTPS
将这些指令与其他变量一起使用,包括像 foo 这样的测试,效果很好。
【问题讨论】:
-
您能否展示一些您尝试过的
SetEnvIf、SetEnv和UnsetEnv组合,这样我们的答案就不会重复您已经尝试过的实验? -
@Castaglia 当然,我更新了我的问题
标签: apache ssl google-compute-engine google-cloud-platform mod-ssl