AWS ELB 和强制使用 Https

AWS ELB 和强制使用 Https

我有一个 ELB,它首先被设置为以这种方式转发:

Protocal    Port    Forward-Protocol    Port
Http         80          Http            80
Protocal    Port    Forward-Protocol    Port
Https        443         Https           443

由于我将 SSL 证书添加到 ELB,并且我的 EC2 实例位于私有子网内,因此 AWS 支持工程师建议将 https 更改为转发为 http,如下所示:

Protocal    Port    Forward-Protocol    Port
Http         80          Http            80
Protocal    Port    Forward-Protocol    Port
Https        443         Http            80

他说这是一种更好的做法,因为 ELB 已经完成了 Https 中需要做的一切,所以没有理由给我的实例增加开销。

问题是,在我的 EC2 实例中,我的文件夹结构是:

  • /var/www/html - 用于常规 http 请求
  • /var/www/secure-用于安全的 https 请求。

我想强制我的网站只执行 Https 请求,所以我想在我的 *.80 虚拟中使用此代码:

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

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} https
#Here i need a rule to change the document root.
...
</VirtualHost>

我对这段代码的问题是它会传输请求 https,而我可能需要的是在 https 时更改文档根目录。

我可以假设,如果它到达 http 并转发到 https - 那么连接就已经是安全的。

答案1

使用重写规则后,所有流量都将是安全的 - 因此不需要非安全文件夹中的文件。

我将删除现有的 html 文件夹并将“安全”文件夹重命名为“html”。

相关内容