我正在使用Lighttpd 1.4.30 在Play Framework中配置负载均衡器。

我在lighttpd-inc.conf中给出了以下条目。

$HTTP["host"] =~ "http://10.74.9.109:9020" {
proxy.balance = "round-robin" proxy.server = ( "/" =>
( ( "host" => "10.74.9.109", "port" => 9020 ) ) )
}

$HTTP["host"] =~ "http://10.74.9.109:80" {
    proxy.balance = "round-robin" proxy.server = ( "/" => (
          ( "host" => "10.74.9.109", "port" => 9020 ),
          ( "host" => "10.74.9.109", "port" => 9030 ) )
    )
}

我的播放应用程序在端口9020、9030上运行良好。

但是,当我尝试http://localhost:80时,我的负载均衡器应该将请求转移到这些端口中的任何一个,这都是没有发生的。我只有Lighttpd测试页。

最佳答案

首先,确保您的server.modules数组中包含mod_proxy。

我认为使用$HTTP["host"]是这里的问题。您应该像这样使用$SERVER["socket"]:

$SERVER["socket"] == ":9020" {
    proxy.server = (
        "/" => (
            (
                "host" => "10.74.9.109",
                "port" => 9020
            )
        )
    )
}

$SERVER["socket"] == ":80" {
    proxy.server = (
        "/" => (
              ( "host" => "10.74.9.109", "port" => 9020 ),
              ( "host" => "10.74.9.109", "port" => 9030 )
        )
    )
}

10-06 10:42