我正在testingVarnish 3.0.4作为Web服务的新前端的早期阶段。 我已清漆configuration为监听端口88.对于其后端它使用现有的Apache服务器端口80上运行在同一主机上。
我遇到的麻烦是,当清漆发出一个请求到Apache,它包括在Host http头“:88”(即使它肯定连接到端口80上的Apache。
例如:
http://www.myservice.com:88/images/foo.gif 。 它向后端发出请求。 HOST头logging到Apache访问日志 – 使用日志文件格式的%{Host} www.myservice.com:88 ,而不是www.myservice.com 。 如果我使用telnet连接到这个apache服务器,并且做出相同的HEAD请求,但是改变了Host头的值,我看到了通过varnish看到的相同的行为 – 即如果在主机头中包含:88,请求返回404 。
我试过了:
req.http.header.port和beresp.http.header.port更改为80 req.http.header.host和beresp.http.header.host更改为www.myservice.com 。 好像我错过了一些明显的东西。
我如何得到清漆发送适当的主机头到Apache?
Varnish默认情况下将Host头部完全不受干扰地发送给Apache。 这是预期的行为 – 除非你告诉它,否则清漆往往不会摆弄任何东西。
为了操作它,除了需要添加的任何条件逻辑外,还要在vcl_recv中join类似这样的内容:
set req.http.Host = "www.myservice.com";