apache proxypass 到 varnish 实例返回 localhost

apache proxypass 到 varnish 实例返回 localhost

我有一个第三方托管的博客,我使用 varnish 来缓存。我的网站的其余部分由 apache 直接托管和服务,所以我有代理密码……由于 httpd 代理密码指向 localhost:varnishport,浏览器显示 localhost/blog:

 ProxyPass /blog http://localhost:6081/blog  
 ProxyPassReverse /blog http://localhost:6081/blog

我尝试在 sub_vcl 中使用以下行来尝试重写 req.http.Host:

   set req.http.Host = regsub(req.http.Host, "localhost", "example\.com");

但是我收到来自 apache 的 502 代理错误(见下文)。我是否应该在 VCL 的另一个部分中设置传回 apache 的标头逻辑?

“代理服务器从上游服务器收到无效响应。代理服务器无法处理请求 GET /blog。

原因:www.localhost 的 DNS 查找失败”

答案1

将 Varnish 放在 Apache 前面,并使用 host+url 条件有选择地缓存您的博客:

sub vcl_recv {

...
...

# detect blog
if (req.http.Host == "example.com" && req.url ~ "^/blog") {
#
#put your cache rules here
#
}
else {
# other parts should be untouched (on your wish)
return(pipe);
}

...
...
}

相关内容