Wordpress URL正在替换负载均衡器URL

时间:2016-01-15 06:10:00

标签: wordpress nginx haproxy

我正在使用一个wordpress网站。在这个wordpress URL中,我在我的作品中使用了2个负载均衡URL。

例如我的实际网址是

www.myurl.com

我的加载blancer网址是

www.myurl01.drd.myurl.com
www.myurl02.drd.myurl.com

对于wordpress当前URL我在function.php中使用以下函数

function current_url() {
    $pageURL = 'http';
    if( isset($_SERVER["HTTPS"]) ) {
        if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
    }
    $pageURL .= "://";
    if ($_SERVER["SERVER_PORT"] != "80") {
        $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
    } else {
        $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
    }
    return $pageURL;
}

此函数返回www.myurl01.drd.myurl.com负载均衡器URL而不是www.myurl.com。如何使用此功能获取我的实际网址。

任何人请建议

1 个答案:

答案 0 :(得分:1)

current_url()的实现无法处理WordPress在代理后面运行的情况。与SERVERHTTPSSERVER_PORT对应的SERVER_NAME数组中的值仅与后端服务器相关。

前端代理服务器可以设置特定标头,以使后端能够检测到它在代理后面运行。 WordPress核心功能已经支持这些额外设置,您可能希望在更改代码之前查看这些实现。

如果您希望快速修复(假设您的代理服务器正确设置了值),请HTTP_HOST使用SERVER_NAME来解决当前问题。

要获得完整的解决方法,您可能需要查看使用HTTP_X_FORWARDED_PROTOHTTP_X_FORWARDED_PORT。如果定义了这些值,则应使用它们而不是本地等效值。