我有一个反向代理,它在外部执行 HTTPS,但在内部执行 HTTP。
这意味着默认情况下应用内 URL 将以 HTTP 作为方案,因为这是联系它的方式。
代理如何告诉后端应该使用 HTTPS?
代理可以向其接收并传递到后端的请求添加额外(或覆盖)标头。这些可用于向后端传达信息。
到目前为止,我已经看到一些用于在 URL 方案中强制使用 https 的方法:
X-Forwarded-Protocol: https
X-Forwarded-Ssl: on
X-Url-Scheme: https
And 维基百科 https://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Common_non-standard_request_headers还提到:
# a de facto standard:
X-Forwarded-Proto: https
# Non-standard header used by Microsoft applications and load-balancers:
Front-End-Https: on
这是您应该添加到 VirtualHost 上的内容apache /questions/tagged/apache: 其他代理应该有类似的功能
RequestHeader set X-FORWARDED-PROTOCOL https
RequestHeader set X-Forwarded-Ssl on
# etc.
我认为最好将它们全部设置,或者设置一个有效的并删除其他已知的。为了防止邪恶的客户来骚扰他们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)