我的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网站加载内容?
答案 0 :(得分:0)
您必须确保Wordpress使用https输出每个资源网址。
您可以使用this https plugin执行此操作:它也可以重写外部网站的网址,以确保它们使用正确的协议。
然而:
如果不满足第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后,该站点将无法使用:
我必须将这些设置用于AWS ELB,并用于Apache SSL直接。