在我们的生产环境中,SSL 被卸载到负载平衡器。这样做是为了减少服务器上的 CPU 负载。
在大多数情况下,这是完全没问题的,但是,我们现在需要服务器知道它们是否通过 SSL 提供页面。
在保持 SSL 卸载不变的情况下,有什么好的方法可以做到这一点?
答案1
您可以添加一个包含该方案的标头发送到后端服务器
例如,使用 NGINX 我会向后端代理服务器发送一个标头,其中包含$方案多变的,
proxy_set_header Scheme $scheme;
然后在您的后端应用程序中您可以获取标题;
if ( this.request.getheader('Scheme') is 'http' ) {
this.response.send('HTTP!')
} otherwise ( this.request.getheader('Scheme') is 'https' ) {
this.response.send('HTTPS!')
}
你使用的是哪种负载均衡器?我相信大多数软件都有类似功能,我只是恰好最了解 NGINX