![在 AWS 网络负载均衡器后面将 HTTP 重写为 HTTPS 时,Apache 重定向循环](https://linux22.com/image/742608/%E5%9C%A8%20AWS%20%E7%BD%91%E7%BB%9C%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1%E5%99%A8%E5%90%8E%E9%9D%A2%E5%B0%86%20HTTP%20%E9%87%8D%E5%86%99%E4%B8%BA%20HTTPS%20%E6%97%B6%EF%BC%8CApache%20%E9%87%8D%E5%AE%9A%E5%90%91%E5%BE%AA%E7%8E%AF.png)
现有的解决方案对我没有帮助,所以我一定是忽略了其他东西。
因此,我正在尝试在 AWS 网络负载均衡器后面使用 Apache 2.4/CentOS 7 建立一个网站。
我在 httpd.conf 中使用它来重写 HTTP->HTTPS,这也被 AWS 认为是仅在负载均衡器后面实现 HTTPS 的正确方法。
RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule .* https://%{SERVER_NAME}/$1 [L,R=permanent]
其中SERVER_NAME
,我的服务器的 DNS 名称是解析为负载均衡器的 IP 地址的。
https://%{HTTP:Host}/
也尝试过但未成功。
即使没有这个,也可以毫无问题地访问服务器(当然,除非可以使用 HTTP)。
由于负载均衡器是客户端的加密端点,因此我仅监听 Web 服务器上的端口 80。这是 AWS 预期的实现方式。
然而,使用这种方法,服务器将不断重定向我的请求,直到浏览器放弃。而且它还最初尝试使用 HTTPS 连接时会发生这种情况。
Apache 的调试级日志输出除了请求超时外没有显示任何错误,负载平衡器日志也没有什么帮助。但也许你可以从中找出一些道理。
我也认为 SELinux 会造成麻烦,但它被设置为宽容。所以实际上不应该做任何事物。
Apache 访问日志:https://textuploader.com/10cjh
Apache 错误日志:https://textuploader.com/10cjx
负载均衡器:https://textuploader.com/10cjg
任何非常感谢您的帮助。
答案1
因此解决方案是使用应用程序负载均衡器而不是网络负载均衡器。