我在Google平台上设置了端点终止设置,HTTP负载均衡器和HTTPS设置为与后端通信的协议。
这意味着所有请求,HTTP或HTTPS,都是对apache的HTTPS。这方面的问题是,HTTPS环境变量被设置为on,即使X-Forwarded-Proto设置为http。
我所有的研究和测试都只指向相反的情况(将HTTPS设置为on,当X-Forwarded-Proto是https时,通过SetEnvIf X-Forwarded-Proto https HTTPS=on规则)。
但是,当HTTPS是http__时,我需要一些可以取消设置的东西。
我尝试过设置SSLOptions -StdEnvVars以及SetEnvIf、SetEnv和UnsetEnv的许多组合。通过mod_rewrite设置它对我来说不是一个选项(我不知道它是否会起作用)。关闭StdEnvVars的一个有趣的注意是,即使关闭了它,除了HTTPS之外,所有与SSL相关的变量都会消失,而且我可以确认在我的任何配置文件中没有任何其他设置。
编辑:
我在服务器配置、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这样的测试工作得很好。
发布于 2016-07-26 17:56:33
将这些指令与其他变量一起使用,包括像foo这样的测试工作得很好。
首先是一个想法(如果有人有更好的想法,就很乐意收回)。
目标代理 目标代理终止来自客户端的HTTP(S)连接,并由一个或多个全局转发规则引用,并将传入的请求路由到一个URL映射。 代理将HTTP请求/响应标头设置为:
1.1 google (请求和答复)X-Forwarded-Proto: [http | https] (仅限于请求)X-Forwarded-For: <client IP(s)>, <global forwarding rule external IP> (仅请求)可以是一个以逗号分隔的IP地址列表,这取决于客户机正在传输的中间层所附加的X转发条目。该部分中的第一个元素显示原始地址。问题是这是在哪里设置的。如果在apache配置文件中,只需更改配置即可。如果它被设置在其他地方,你需要找出它的位置。
TargetHttpsProxies资源也没有列出任何改变它的方法。那么,您如何发布导致上述行为的配置文件?
https://stackoverflow.com/questions/38275934
复制相似问题