我在Google Cloud Platform HTTP负载均衡器上设置了终端点终止,并将HTTPS设置为与后端通信的协议。这意味着所有请求,HTTP或HTTPS,都是通过HTTPS发送到apache。问题在于,即使将X-Forwarded-Proto设置为http,HTTPS环境变量仍设置为on。
我所做的所有研究和测试都只指向相反的情况(通过SetEnvIf X-Forwarded-Proto https HTTPS = on规则将HTTPS设置为on,当X-Forwarded-Proto为https时)。但是,我需要一些方法来取消当X-Forwarded-Proto为http时的HTTPS设置。
我尝试过设置SSLOptions -StdEnvVars以及许多组合的SetEnvIf,SetEnv和UnsetEnv。通过mod_rewrite进行设置对我来说不是一个选项(我不知道它是否会起作用)。关闭StdEnvVars的有趣说明是,即使它关闭了,除了HTTPS之外的所有SSL相关变量都消失了,我可以确认在我的任何配置文件中都没有其他设置它。
编辑:以下是我在服务器配置,虚拟主机和htaccess中尝试过的一些指令示例:
我所做的所有研究和测试都只指向相反的情况(通过SetEnvIf X-Forwarded-Proto https HTTPS = on规则将HTTPS设置为on,当X-Forwarded-Proto为https时)。但是,我需要一些方法来取消当X-Forwarded-Proto为http时的HTTPS设置。
我尝试过设置SSLOptions -StdEnvVars以及许多组合的SetEnvIf,SetEnv和UnsetEnv。通过mod_rewrite进行设置对我来说不是一个选项(我不知道它是否会起作用)。关闭StdEnvVars的有趣说明是,即使它关闭了,除了HTTPS之外的所有SSL相关变量都消失了,我可以确认在我的任何配置文件中都没有其他设置它。
编辑:以下是我在服务器配置,虚拟主机和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