我有一个网站目前正在使用 Varnish 来缓存 HTTP 请求,但是由于多种原因,它弊大于利。
我的问题是,我找不到一种方法来阻止所有通过它的 http 请求。如果我停止 varnishd 服务,那么整个站点就会瘫痪。varnish statup 选项表明它正在使用端口 2000,但 Apache 上似乎没有任何与之相关的内容。Apache 配置指向标准端口 80。
这是 CentOS 系统,带有 Apache 2.2.3、Varnish 2.0.6
答案1
检查 Varnish VCL(可能是 default.vcl)以查看它使用的后端服务器的地址(您可以将其视为后端指令)。这可能使用了非标准端口,例如 8080。
接下来您需要执行以下操作:
- 编辑 Apache 配置以绑定到端口 80
- 杀灭清漆
- 在 80 上重新启动 Apache
答案2
然后尝试让 Apache 监听端口 2000。可能存在一条防火墙规则,将端口 80 的所有连接映射到端口 2000。
答案3
如果您想让 varnish 保持运行,但只将请求传回后端服务器(可能在您调整/修复默认配置时),您可以暂时将该vcl_receive()
功能更改为如下形式(未经测试):
sub vcl_recv() {
return (pipe);
}
然后重新启动Varnish:
>sudo service varnish restart
这会将请求/连接传回后端,直到连接关闭。