【问题标题】:HTTP redirect to HTTPS AWS EC2 with Load Balancer使用负载均衡器将 HTTP 重定向到 HTTPS AWS EC2
【发布时间】:2015-03-18 05:11:35
【问题描述】:

这是我的设置:

EC2 和 Apache 使用弹性负载均衡器。

我希望将所有 http 流量自动重定向到 https。我找到了这个记录并通过添加到我的 httpd.conf 文件中进行了尝试:

<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI}
</VirtualHost>

但是,这在我重新启动服务器之前或之后都不起作用。在我从配置中删除规则之前,HTTP 没有重定向,我的网站抛出了各种错误。

我认为我更新文件有误或负载平衡器设置不正确。对于负载均衡器的侦听器,我有 LB 协议 HTTP,端口 80,实例协议 HTTP 和实例端口 80。我在端口 443 上有 LB 协议 HTTPS,实例端口 443。我的 SSL 使用后一种协议。

知道从这里到哪里去吗?

【问题讨论】:

  • 请包括错误。还包括显示您的站点如何配置的相关 apache conf。

标签: apache ssl amazon-web-services amazon-ec2


【解决方案1】:

您提到的配置应该可以正常工作。问题可能是mod_rewrite 模块未加载。将以下行添加到您的 apache 配置中以加载重写模块。

LoadModule rewrite_module modules/mod_rewrite.so

您可以尝试以下配置,这比您使用的要简单得多。

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

【讨论】:

  • 谢谢!正是问题所在。加载mod_rewrite 模块后完美运行。这对我来说是一个全新的领域。我是否需要“关闭”该模块或类似模块?我把你上面的所有代码放在我的 httpd 文件的末尾。想知道是否需要在代码末尾添加任何内容,以防我需要在 httpd 文件末尾添加其他内容。
  • 如果您将此重定向规则应用于特定的VirtualHost,则将这些规则放入其中。如果您希望对所有 VirtualHosts 进行重定向,那么将它们放在开头或结尾并不重要。
  • 对于 apache 或其他服务的未来问题,请在 serverfault.com 上发帖,因为 stackoverflow.com 专门用于编程问题。
  • 虽然这是公认的答案,但 %{HTTPS} off 仅在实例通过端口 443 或 SSL 接收流量时才有效。另一方面,RewriteCond %{HTTP:X-Forwarded-Proto} !https 在 SSL 在负载均衡器处停止并且所有流量都重定向到端口 80 上的实例时起作用。
猜你喜欢
  • 2017-02-19
  • 2014-08-27
  • 2020-08-21
  • 1970-01-01
  • 1970-01-01
  • 2015-11-13
  • 2018-02-06
  • 2017-02-20
  • 2017-10-21
相关资源
最近更新 更多