好吧,我感觉这件事有点愚蠢。
我正在尝试设置一个简单的 Apache 反向代理设置,但遇到了麻烦。我以前曾使用过此设置,但现在我不知道出了什么问题。以下是设置:
Listen 4050
ServerName lb-test
DocumentRoot /www/app
ProxyRequests Off
Header add Set-Cookie "BALANCEID=hej.%{BALANCER_WORKER_ROUTE}e; path=/;" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://cluster>
BalancerMember http://appserver1:4050 route=appserver1
BalancerMember http://appserver2:4050 route=appserver2
Order deny,allow
Allow from all
</Proxy>
ProxyPass /balancer-manager !
ProxyPass / balancer://cluster/ stickysession=BALANCEID
ProxyPassReverse / balancer://cluster/
<Location /balancer-manager>
SetHandler balancer-manager
Order deny,allow
Deny from None
Allow from all
</Location>
我可以在打开调试的日志中看到请求被路由到平衡器成员,但同时发生的情况是代理主机 URL 也被插入到标头中。
从 lb 主机:curl -I localhost
HTTP/1.1 200 OK
Date: Wed, 11 Apr 2012 17:33:18 GMT
Server: thin 1.3.1 codename Triple Espresso
Content-Type: text/html; charset=utf-8
Via: 1.1 appserver2:4050
Via: 1.1 lb-test
Set-Cookie: BALANCEID=hej.appserver2; path=/;
如您所见,两个主机都在标头中,这会破坏应用程序。我认为访问 localhost:80 不会触发 mod_proxy,对吗?如果我访问 localhost:4050,也会发生同样的事情。有人知道发生了什么吗?
谢谢
答案1
你应该设置;
ProxyPreserveHost On
在您的 vhost 配置中