使用来自Load Balancer后面的AWS证书管理器的SSL设置wordpress网站

时间:2017-08-05 05:39:04

标签: wordpress .htaccess amazon-web-services ssl elastic-load-balancer

我正在努力解决一个问题很长一段时间我仍然没有适当的解决方案。方案如下:

域名: domain-name.com 网站所需网址 https://www.domain-name.com/ 网站类型: Wordpress 虚拟主机:AWS DNS管理: Route53 SSL:来自随Load Balancer附加的AWS Certificate Manager

我尝试了几种方法,但没有奏效,其中一些如下:

案例1: 在Route 53,我设置了带有负载均衡器别名的裸域A记录和带有值domain-name.com的www.domain-name.com的CNAME记录 wordpress的网站网址:https://www.domain-name.com 结果:此网站重定向过多,网站无法加载

案例2: 在Route 53我设置了裸域和www.domain-name.com两个带有负载均衡器别名的记录 wordpress的网站网址:https://www.domain-name.com 在htaccess,我从301设置301重定向到https 结果:我发现我的网站有效,但它有多个重定向,例如,如果我请求带有http://domain-name的网址,则我转到http://www.domain-name然后再次重定向到https://www.domain-name

案例3: 我保留了与案例2相同的所有内容,除了我将裸域的记录更改为启用静态Web托管的S3桶并将所有请求转发到www.domain-name但它没有解决多重定向问题。我还尝试设置使用上述S3存储桶的CloudFront,并使用cloudfront别名更新裸域的A记录。

Kindky帮助我在从Route 53到Load Balancer设置的每个级别上正确设置到htaccess,以便以标准方式实现上述目标。

由于

2 个答案:

答案 0 :(得分:1)

您需要一步一步地解决问题。您试图一次完成所有事情,因此无法确定链中的失败链接。

  1. 确保路线53中的A Alias记录指向您的ELB,如下所述:http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-elb-load-balancer.html

    在Route 53托管区域,确保您有一个名为www.domain-name.com的记录,类型A,别名:是,别名目标:ELB的名称

  2. 确保正确配置ELB上的侦听器。在HTTP上完成所有工作后,您可以专注于HTTPS。由于VPC内的流量被视为私有且因此是安全的,因此您的后端实例应仅侦听端口80.因此,删除任何重定向,从一个侦听器开始(80(HTTP) - > 80(HTTP) )确认您的网站可以访问后,添加第二个监听器443(HTTPS) - > 80(HTTP)。

    您使用的是新的ALB还是旧的经典ELB?

    现在,您应该同时在http://www.domain-name.com/https://www.domain-name.com/投放您的网站。

  3. 您现在可以在后端实例上实现从HTTP到HTTPS的重定向,如此处所述https://aws.amazon.com/premiumsupport/knowledge-center/redirect-http-https-elb/

    另外,请确保在Wordpress中配置了正确的网址,因为它可能会搞砸。

答案 1 :(得分:1)

在路线53处,将www和非www域的A记录添加到Application LB别名。从一个监听器(80(HTTP) - > 80(HTTP))开始,在确认您的网站可以访问后,添加第二个监听器443(HTTPS) - > 80(HTTP)。

您的网站现在应该同时在http://www.domain-name.com/https://www.domain-name.com/上投放。

否则在重定向的htaccess你必须以不同的方式处理事情。由于使用Load Balancer进行SSL卸载,您不会以正常方式检查https。您需要检查X-Forwarded-Proto

对于https://www.domain-name.com,它应该如下。

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{SERVER_NAME} ^(www\.)?(.*)$ [NC]
RewriteRule ^.*$ https://www.%2%{REQUEST_URI} [R=301,L]` 

对于https://domain-name.com,它应该如下。

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{SERVER_NAME} ^(www\.)?(.*)$ [NC]
RewriteRule ^.*$ https://%2%{REQUEST_URI} [R=301,L]`