4

我在我的 Google Cloud Platform HTTP 负载均衡器上设置了端点终止设置,并将 HTTPS 设置为与我的后端通信的协议。

这意味着所有请求,HTTP 或 HTTPS,都是 HTTPS 到 apache。这样做的问题是HTTPS环境变量设置为on即使X-Forwarded-Proto设置为http.

我所有的研究和测试都只指向相反的情况(通过规则设置HTTPS何时)。onX-Forwarded-ProtohttpsSetEnvIf X-Forwarded-Proto https HTTPS=on

但是,我需要一些东西来取消HTTPSX-Forwarded-Protois http

我已经尝试过设置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就可以了。

4

1 回答 1

1

将这些指令与其他变量一起使用,包括像 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-Forwarded-For 条目。该部分的第一个元素显示源地址。

问题是这是在哪里设置的。如果在 apache 配置文件中,您可以更改配置。如果它被设置在其他地方,你需要找出在哪里。

TargetHttpsProxies 资源也没有列出任何改变它的方法。那么您如何发布导致上述行为的配置文件?

于 2016-07-26T17:56:33.960 回答