我正在寻找一种方法来告诉 IIS 6,即使请求通过 http 发送,也可以将其视为 https。
HTTPS 在请求到达应用服务器之前进行管理。对于 Tomcat,我们使用 RemoteIpValve 和 http 标头 X-Forwarded-Proto 来告知 Tomcat 连接是否安全。
有没有办法在 IIS 中做到这一点? Isapi 过滤器可以解决问题吗?
感谢您的所有提示。
[编辑:] 更准确地说:对于我们的 tomcat 来说,架构如下:
USER
|
LoadBalancer (KeepAlived)
| |
| '- Apache (SSL)
|
HaProxy
|
|
Tomcat
当用户在 tomcat 上发出 https 请求时,请求将通过 apache,在那里对 https 进行解码(Apache 添加标X-Forwarded-Proto: https
头)。然后,请求通过 HaProxy(Http LoadBalancer)重定向到 Tomcat。
我希望它更清楚一点。
附言:请原谅我的英语,我练习得不够。
答案1
例如,对于 IIS7,应用程序请求路由 (ARR) + ARR Helper 通过添加 x-headers 来实现这一点,就像您对 Tomcat 所做的那样。
您需要一个 ISAPI 筛选器来将 x-header 重写回 IIS6 框上的原始标头值。Microsoft 没有用于重写标头的 IIS6 解决方案,但您可以看看 BigIP 客户端是否能为您完成此操作,或者您自己编写。
IIS7 已经有本机解决方案,因此如果您需要在开发自己的 ISAPI 过滤器(不是一件容易的事)或升级之间进行选择,这可能是考虑升级您的环境的机会。