现有的解决方案对我没有帮助,所以我必须遗漏其他东西。
所以我试图在 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]
我的服务器的 DNS 名称在哪里SERVER_NAME
,它解析为负载均衡器的 IP 地址。
https://%{HTTP:Host}/
也试过不成功。
没有这个,访问服务器是没有问题的(当然可以使用 HTTP 除外)。
由于负载均衡器是客户端的加密端点,我只在网络服务器上的 80 端口上监听。这是 AWS 的预期实施方式。
然而,使用这个,服务器将无休止地重定向我的请求,直到浏览器放弃。最初尝试连接 HTTPS 时也会发生这种情况。
Apache 的调试级日志输出没有显示任何错误,只是请求超时并且负载平衡器日志也不是很有帮助。但也许你可以从中理解。
我也想过 SELinux 会造成麻烦,但它被设置为允许的。所以它实际上不应该做任何事情。
Apache access_log:https ://textuploader.com/10cjh
Apache 错误日志:https ://textuploader.com/10cjx
负载均衡器:https ://textuploader.com/10cjg
非常感谢任何帮助。
因此解决方案是使用 Application Load Balancer 而不是 Network Load Balancer。