如何让WordPress站点成为AWS负载均衡器的后盾

时间:2020-08-17 作者:Pathead

我们有一个旧的wordpress站点,托管在AWS EC2 linux服务器上,我正试图将其置于负载平衡器之后,以便使用HTTPS和WAF。我是一个有点经验的系统管理员,但对wordpress很陌生。我无法通过HTTPS加载内容,同时无法进入负载平衡器和服务器之间的重定向循环。

我有负载平衡器设置,可以在端口80上与服务器对话,如果WP\\u SITEURL/WP\\u HOME设置为http://,我会在chrome开发控制台中收到一系列混合内容错误,因为它试图通过http加载脚本和css。如果我将WP\\u SITEURL/WP\\u HOME更改为https://,它会创建一个重定向循环,因为wordpress一直在尝试将负载平衡器重定向到https,而负载平衡器正在尝试在端口80上通信。

有没有一种方法可以允许负载平衡器在端口80上访问服务器,同时仍然使用https作为资源、脚本等的基本URL?

1 个回复
SO网友:kierzniak

当WordPress位于https代理(您的负载平衡器)之后时,它不知道https已启用。代理通过https(443端口)工作,但代理和WordPress之间的通信通过http(80端口)进行。因为WordPress流量是通过http的,所以您会得到从https到http(通过WordPress)以及从http到https(通过代理)的重定向循环。您需要强制WordPress开始使用https。

将此行粘贴到wp-config.php

$_SERVER[\'HTTPS\'] = \'on\';
有时代理发送额外的标头HTTP_X_FORWARDED_PROTO 向WordPress发送消息,告知原始流量位于https上。你可以用它来更灵活一点

if (isset($_SERVER[\'HTTP_X_FORWARDED_PROTO\']) && $_SERVER[\'HTTP_X_FORWARDED_PROTO\'] === \'https\') {
    $_SERVER[\'HTTPS\'] = \'on\';
}
更改WP_SITEURLWP_HOME 使用https。并将数据库中的所有链接替换为https。

参考号:https://developer.wordpress.org/reference/functions/is_ssl/

相关推荐

使用wp-Super-cache和Amazon CloudFront-我可以直接提供文件(无CDN)吗?

我正在使用启用cdn支持的wp super cache插件(aws cloudfront)。我也在使用重新加载的wp表。后一个插件通过ajax包含一个文本文件,该文件由cdn提供服务。该插件不执行任何类型的jsonp操作,因此文件会遇到访问控制允许源问题。在我去修改插件以正确提取文件之前,有人知道我如何限制cdn存储此文件,并直接提供它吗?