在Varnish 3上玩了好几个小时 - 这很有趣。我想找到一种'优雅地停止'Varnish的方法 - 这意味着如果我曾经打过sudo service varnish stop
我希望Apache能够立刻回来。当然,这个想法就是当垃圾撞到风扇然后恢复和平时停止清漆。
问题是Apache现在监听8080,所以我一直在努力让Apache同时监听端口80和8080 - 它似乎不是正确的方式,因为它不起作用!
<VirtualHost *:80 127.0.0.1:8080>
有没有一种聪明的方法来实现这一目标?或者是一个命令行脚本的方式去?把TTL设置为0怎么样?
答案 0 :(得分:3)
这可以很容易地完成,但它涉及某种反向代理。
Stack Exchange使用的是haproxy,但nginx也可以,其他负载均衡器和反向代理也是如此。
global
maxconn 4096
user haproxy
group haproxy
daemon
log 127.0.0.1 local0 debug
defaults
log global
mode http
option httplog
option dontlognull
retries 3
option forwardfor
maxconn 2000
timeout connect 3s
frontend public
bind *:80
default_backend servers
backend servers
balance roundrobin
server varnish 127.0.0.1:5000 check inter 15s
server apache 127.0.0.1:8080 backup
如果varnish没有响应,这将自动路由到apache,并将检查每15秒返回一次清漆。
upstream backend {
server 127.0.0.1:5000 fail_timeout=3s; # varnish
server 127.0.0.1:8080 backup; # apache
}
server {
location / {
proxy_pass http://backend;
}
}
这几乎完全相同。此外,您可以在这些前端进行SSL处理,而不必关心清漆。
由于端口绑定的工作方式,除非您有一个使用apache和varnish的外部软件,否则如果没有响应,则无法让它们切换端口。