当使用Apache负载平衡器和PlackUp时,self_url()显示不正确的值

Apache使用HTTP :: Server :: PSGI代理PSGI应用程序。

apache conf文件:

<Proxy balancer://my_cluster> BalancerMember http://127.0.0.1:3001 BalancerMember http://127.0.0.1:3002 BalancerMember http://127.0.0.1:3003 </Proxy> ProxyPreserveHost On ProxyPass /dispatch/ balancer://my_cluster/ 

该url将是: http : //foo.com/dispatch/main

在调用$ self-> query-> self_url()后,我得到: http : //foo.com/main

/调度每次都被删除。 我不确定哪个图层切割出来或如何恢复。

首先我需要设置ProxyPreserveHost关(这是默认的)

更改PSGI应用程序的入口点。

 builder { return $app; } 

变为:

 builder { mount "/dispatch" => $app } 

将ProxyPass更改为:

 ProxyPass /dispatch/ balancer://my_cluster/dispatch/ 

现在url_self()按预期工作。