Ami*_*eka 95 https redirect nginx amazon-ec2 amazon-elb
我想将所有http请求重定向到elb上的https请求.我有2个ec2实例.我正在使用nginx作为服务器.我试过重写nginx conf文件没有任何成功.我会喜欢它的一些建议.
Dmi*_*hin 105
ELB设置X-Forwarded-Proto
标头,您可以使用它来检测原始请求是否是HTTP,然后重定向到HTTPS.
你可以在你的server
conf中尝试这个:
if ($http_x_forwarded_proto = 'http') {
return 301 https://yourdomain.com$request_uri;
}
Run Code Online (Sandbox Code Playgroud)
看看ELB文档.
Ull*_*lli 66
AWS Application Load Balancers现在支持本机HTTP到HTTPS重定向.
要在控制台中启用此功能,请执行以下操作:
使用此处描述的CLI可以实现相同的目的.
也可以在Cloudformation中执行此操作,您需要在其中设置一个Listener对象,如下所示:
HttpListener:
Type: AWS::ElasticLoadBalancingV2::Listener
Properties:
LoadBalancerArn: !Ref LoadBalancer
Port: 80
Protocol: HTTP
DefaultActions:
- Type: redirect
RedirectConfig:
Protocol: HTTPS
StatusCode: HTTP_301
Port: 443
Run Code Online (Sandbox Code Playgroud)
如果您仍然使用经典负载均衡器,请使用其他人描述的NGINX配置之一.
Tyl*_*ler 33
我有同样的问题,在我的情况下,HTTPS完全由ELB处理,我提前不知道我的源域,所以我最终做了类似的事情:
server {
listen 81;
return 301 https://$host$request_uri;
}
server {
listen 80;
# regular server rules ...
}
Run Code Online (Sandbox Code Playgroud)
然后当然将ELB'https'指向实例端口80,然后指向实例端口81的'http'路由.
Ima*_*ghi 16
Amazon Elastic Load Balancer(ELB)支持名为X-FORWARDED-PROTO的HTTP标头.通过ELB的所有HTTPS请求都将使X-FORWARDED-PROTO的值等于"HTTPS".对于HTTP请求,您可以通过添加以下简单重写规则来强制HTTPS.对我来说它工作正常!
阿帕奇
您可以在.htaccess文件中添加以下行:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI}
Run Code Online (Sandbox Code Playgroud)
或者,如果您使用vhost.conf管理同一EC2 Web服务器中的多个域,则可以将以下内容添加到vhost.conf(将其添加到要为其使用https的域):
<VirtualHost *:80>
...
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI}
...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
IIS
安装IIS Url-Rewrite模块,使用配置GUI添加以下设置:
<rewrite xdt:Transform="Insert">
<rules>
<rule name="HTTPS rewrite behind ELB rule" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions>
<add input="{HTTP_X_FORWARDED_PROTO}" pattern="^http$" ignoreCase="false" />
</conditions>
<action type="Redirect" redirectType="Found" url="https://{SERVER_NAME}{URL}" />
</rule>
</rules>
</rewrite>
Run Code Online (Sandbox Code Playgroud)
在这里阅读更多
上面的 htaccess 解决方案导致 ELB 健康检查失败。我在寻找解决方案时遇到了一些麻烦,直到我在网上发现一篇文章,其中有人遇到了与我相同的问题。他的解决方案是将其添加到 htaccess 文件的开头:
RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} ^http$
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Run Code Online (Sandbox Code Playgroud)
要在通过 ELB 将外部请求重定向到 HTTPS 的同时允许通过 HTTP 进行此请求和其他本地请求,请调整重写条件以匹配 http 而不是 https 上的否定匹配。
资料来源:使用 AWS 和 ELB 将 HTTP 重定向到 HTTPS
归档时间: |
|
查看次数: |
70553 次 |
最近记录: |