apache - Varnish 的优雅关闭

标签 apache ubuntu varnish

用 Varnish 3 玩了几个小时 - 这很有趣。我正在尝试找出一种“优雅地停止” Varnish 的方法——这意味着如果我曾经点击 sudo service varnish stop我希望 Apache 马上回来。当然,这个想法是当废话击中风扇时停止 Varnish,然后恢复平静。

问题是 Apache 现在监听 8080,所以我一直在尝试让 Apache 同时监听端口 80 和 8080 - 这似乎不是正确的方法,因为它不起作用!
<VirtualHost *:80 127.0.0.1:8080>
有没有聪明的方法来实现这一目标?或者是一个命令行脚本要走的路?将 TTL 设置为 0 怎么样?

最佳答案

这可以很容易地完成,但它涉及某种反向代理。
Stack Exchange 使用的是 haproxy , 但是 nginx也可以工作,就像一堆其他负载均衡器和反向代理一样。
haproxy 配置:

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 秒检查一次 varnish 返回。
nginx配置:
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 处理,而不必关心 Varnish 。
由于端口绑定(bind)的工作方式,除非您有一个与 apache 和 varnish 一起使用的外部软件,否则如果没有响应,您将无法让它们切换端口。

关于apache - Varnish 的优雅关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21166131/

相关文章:

apache - 需要 apache Phoenix UDF 指南

apache - 在 docker 容器中运行 apache tomcat 服务器

php - Codeigniter http -> https 发现 302

ubuntu - 如何通过安装在 Ubuntu 上的 block 设备删除存储在 Ceph 中的文件?

ubuntu - Heroku CLI 不工作

caching - 指定 varnish 后端而不缓存

docker - Varnish 错误 : Failed to open (any) accept sockets

php - 如何根据 cookie 值制作单独的缓存页面?

mysql - symfony2 : MySQL server error when trying to create a database

python - python2 存在 site-packages 文件夹,python3 不存在