[英]SSL: UNKNOWN_PROTOCOL with Google Cloud's SSL Load Balancing Proxy
[英]WordPress & Load balancing on Google Cloud Balancing
我正在将 WordPress 站点设置为 Google VM 实例。 我正在使用负载平衡器并设置前端来管理 SSL (https) 边界和证书。 我使用(非短暂的)URL (xxx.xxx.xxx.xxx) 将“A”记录设置为指向负载均衡器,并且我指定了适当的谷歌名称服务器。 我的WordPress站点是一个实例组中的VM实例。 它应该通过 HTTP 进行通信,因为 HTTPS 在负载均衡器处终止。 (因此有效地在 HTTP 上谷歌内部流量)
WP_HOME
和WP_SITEURL
的 WordPress 值应该是多少,请记住它们在负载均衡器后面和 HTTPS/SSL 边界后面?
在大多数情况下,您不需要在正确设置WP_SITEURL
后更改WP_HOME
和 WP_SITEURL。 将它们指定为正常https://www.example.com
。 换成你的真实网站URL。
当 WordPress 在负载均衡器后面运行时,需要修改wp-config.php
以处理 88338288002 HTTP header HTTP_X_FORWARDED_FORWARDED_PROTO
以检测客户端连接到负载均衡器 88338288002 靠近 wpconfig 的底部wp-config.php
:
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
{
$_SERVER['HTTPS']='on';
}
接下来,如果您正在记录客户端访问,则需要记录正确的客户端 IP 地址。 负载均衡器会将其 IP 地址添加为客户端,使您的日志报告负载均衡器 IP 地址而不是客户端的 IP 地址。
将以下几行放在前面几行之后(实际上无关紧要):
if ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !empty($_SERVER['HTTP_X_FORWARDED_FOR']) )
{
$ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$_SERVER['REMOTE_ADDR'] = trim($ips[0]);
}
elseif ( isset($_SERVER['HTTP_X_REAL_IP']) && !empty($_SERVER['HTTP_X_REAL_IP']) )
{
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_REAL_IP'];
} elseif ( isset($_SERVER['HTTP_CLIENT_IP']) && !empty($_SERVER['HTTP_CLIENT_IP']) )
{
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CLIENT_IP'];
}
重要的提示:
您提到了“实例组”。 对于托管实例组 (MIG),如果重新创建实例,您对实时运行的 VM 所做的任何更改都将丢失。 这包括对 WordPress 本身的所有更改。 您必须使用unmanaged instance group
或重新创建用于managed instance group
实例组的映像。 也有例外,比如使用共享的独立MySQL服务器,所有配置文件都存储在Cloud Storage或NFS上。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.