尝试使用 ec2 apache2 ubuntu 将所有 Web 流量定向到 https 时,我该如何解决 "Too many redirects error"?

How can I work around "Too many redirects error" when trying to direct all web traffic to https with ec2 apache2 ubuntu?

这是我的配置文件

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    Redirect permanent / https://www.mywebsite.co/
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

当我在浏览器中输入 mywebsite.co 它成功地重定向了我 https://mywebsite.co 但是由于这个错误内容没有呈现在页面上(来自 Google Chrome )

Error 310 (net::ERR_TOO_MANY_REDIRECTS): There were too many redirects.

我有一个使用端口 80 处理 http 请求的 EC2 实例和一个处理 https 请求的负载均衡器。我不确定该怎么做,我在网上找到的 none 解决方案都有效。

当您访问 ELB 时,您正在通过端口 443 通过 SSL 请求,但随后您以不安全的端口 80 向后端请求。这很好,但是您的配置不知道这应该结束了443,因为您正在反向代理它。对于 Web 服务器来说,这只是一个 80 端口不安全请求,因此它会尝试重定向到 SSL 端口 443,这就是它循环的原因。

您可以查看重写以分析转发的 headers,而不是进行重定向,例如:

RewriteEngine On
RewriteCond %{HTTP:X-FORWARDED-PORT} !=443
RewriteRule ^(.*)$ https://www.mywebsite.co [R=301,NE,L]