通过AWS的Wordpress,强制使用ELB进行HTTPS

时间:2015-06-16 12:19:40

标签: wordpress amazon-web-services load-balancing

我的EC2实例上安装了WordPress,前面有一个ELB。

目前我的ELB听众看起来像这样:

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

在我的.htaccess文件中,我有一个重新路由到https,因为连接不安全:

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI}

这样我确定我的网站只能通过https访问。

AWS ELB最佳做法是将https请求转发到实例http端口,以避免实例开销和双重https处理。

问题是WordPress然后尝试从不安全的网站加载一些内容,这会阻止我的网站被密封。

什么是正确的方法?我应该将它保留https到https吗?如果没有,有没有办法迫使Wordpress只从https网站加载内容?

2 个答案:

答案 0 :(得分:0)

您必须确保Wordpress使用https输出每个资源网址。

您可以使用this https plugin执行此操作:它也可以重写外部网站的网址,以确保它们使用正确的协议。

然而:

  1. 它很旧,可能不适用于较新版本的WP
  2. 外部网站需要支持https
  3. 如果不满足第2点,您可以设置反向代理以通过您的域提供网站内容(您仍然必须使用该插件重写网站的网址)。

答案 1 :(得分:0)

我发现为了让Wordpress使用HTTPS,wp-options.php需要以下设置:

$_SERVER['HTTPS'] = 'on';
define('FORCE_SSL_ADMIN', true);

文档: https://codex.wordpress.org/Administration_Over_SSL

这应该允许您登录,然后使用https协议更新站点URL。

如果没有这些设置,在切换到HTTPS AWS ELB后,该站点将无法使用:

  • 无法登录...
  • 但是如果你使用functions.php更新网址:无限重定向循环..

我必须将这些设置用于AWS ELB,并用于Apache SSL直接。