现有的解决方案对我没有帮助,所以我一定是忽略了其他东西。
因此,我正在尝试在 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
因此解决方案是使用应用程序负载均衡器而不是网络负载均衡器。