ASP.NET Request.ServerVariables[“SERVER_PORT_SECURE”] 和负载均衡器的代理 SSL
我们有一些遗留的 ASP.NET 代码可以检测请求是否安全,并在需要时重定向到页面的 https 版本。
此代码使用 Request.ServerVariables["SERVER_PORT_SECURE"] 来检测是否需要 SSL。
我们的运营团队建议在负载均衡器 (F5 Big-IP) 而不是 Web 服务器上执行代理 SSL(假设出于本问题的目的,这是一项要求)。
结果是所有请求都以 HTTP 形式发送给 Web 服务器。
我的问题:我们怎样才能让网络服务器知道传入连接在到达负载均衡器之前是安全的?我们可以继续使用 Request.ServerVariables["SERVER_PORT_SECURE"] 吗?
您是否知道负载均衡器配置将发送标头,以便不需要更改应用程序代码?
We have some legacy ASP.NET code that detects if a request is secure, and redirects to the https version of the page if required.
This code uses Request.ServerVariables["SERVER_PORT_SECURE"] to detect if SSL is needed.
Our operations team has suggested doing proxy SSL at the load balancer (F5 Big-IP) instead of on the web servers (assume for the purposes of this question that this is a requirement).
The consequence would be that all requests appear as HTTP to the web server.
My question: how can we let the web servers known that the incoming connection was secure before it hit the load balancer? Can we continue to use Request.ServerVariables["SERVER_PORT_SECURE"]?
Do you know of a load balancer config that will send headers so that no application code changes are needed?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用 iRule 有效地将自定义元素添加到 HTTP 标头,然后通过
Request.Headers
在 ASP.NET 代码中检测它。深入研究 Request.Headers 对象的集合,您的 F5 硬件可能已经在 HTTP 标头之一上标记了自己。Use an iRule to effectively add a custom element to the HTTP header and then detect it in the ASP.NET code via
Request.Headers
. Dig into the collection of the Request.Headers object as well as your F5 hardware may already be marking itself on one of the HTTP Headers anyway.