Squid 反向代理:维护模式

Squid 反向代理:维护模式

目前,我正在尝试配置我的 squid (3.1) 反向代理,以便在唯一的后端 Web 服务器处于维护状态时始终显示静态网页。无需自动切换。维护模式应通过手动配置更改来激活。

squid 文档和 wiki 在这一点上并没有真正提供帮助。我的想法是阻止每个请求,并显示一个deny_info带有 200 状态代码的静态网页,如下所示:

acl everyone src 0.0.0.0/0.0.0.0
## Testing with my client ip address:
# acl everyone src 10.123.0.40/32
http_access deny everyone
deny_info 200:/etc/squid/maintenance.html everyone

我把这个片段任何其他http_access规则,并尝试了该配置,仅阻止我自己的客户端流量,但使用没有效果squid -k reconfigure。它可能在我使用时有效sudo service squid restart,但我现在不想测试它,因为当时有很多用户使用该服务,并且 squid 重新启动大约需要半分钟(每次测试)。

我的问题:

  1. 对于该目的来说,该配置正确吗?
  2. 我是否需要使用sudo service squid restart才能使更改生效,或者只是出现了什么问题?
  3. 有没有更好的解决方案来显示静态维护页面?

提前致谢。

答案1

  • squid 3.1.x 好像已经有一千年的历史了。
  • squid 3.x 完全失去了软重构,因此需要重新启动才能应用配置更改。这意味着您将失去与站点的客户端连接。每次都会像一次 flash-DoS 一样。

总结:这使得 squid 不适合在生产环境中用作网站的反向代理。请考虑使用nginx

如果你不顾这些警告,仍然打算坚持使用 squid,那么你应该写一篇重定向器这将检查诱饵页面是否应生效,以消除重启问题。此重定向器可以使用您知道的任何脚本语言编写:perl、python、ruby 甚至/bin/sh。逻辑很简单:重定向器将检查一些标志(例如文件标志)是否应显示诱饵页面,如果不应显示 - 它只会将请求传递给后端。它甚至可以检查此类后端的可行性。

nginx该功能开箱即用。

相关内容