反向代理的事实标准是什么告诉使用后端SSL?

时间:2013-04-16 16:49:22

标签: https http-headers reverse-proxy

我有一个反向代理,它在外部执行HTTPS,但在内部执行HTTP。

这意味着默认情况下,应用内网址会将HTTP作为方案,因为这是与其联系的方式。

代理如何告诉后端应该使用HTTPS?

2 个答案:

答案 0 :(得分:30)

代理可以为其收到的请求添加额外(或覆盖)标头,并传递给后端。这些可用于将信息传递给后端。

到目前为止,我已经看到一对用于强制在URL方案中使用https的一对:

X-Forwarded-Protocol: https
X-Forwarded-Ssl: on
X-Url-Scheme: https

wikipedia也提到:

# a de facto standard:
X-Forwarded-Proto: https
# Non-standard header used by Microsoft applications and load-balancers:
Front-End-Https: on

这应该添加到上的VirtualHost:其他代理应具有类似的功能

RequestHeader set X-FORWARDED-PROTOCOL https
RequestHeader set X-Forwarded-Ssl on
# etc.

我认为最好将它们全部设置,或设置一个可以工作并删除其他已知的。为了防止邪恶的客户搞乱他们。

答案 1 :(得分:0)

我花了几个小时的时间来寻找适合自己环境的魔术设置。我在码头应用服务器和apache2 http服务器前面有一个SSL httpd apache反向代理。这个answer实际上给了我有用的信息。对我而言,在站点conf文件中添加 RequestHeader集“ X-Forwarded-Proto” expr =%{REQUEST_SCHEME} 足以使目标在构建链接时使用https而非http作为协议。响应。我在上面尝试了X-FORWARDED-PROTOCOL,但是没有用。希望这对以后的Google搜索有帮助!