我遇到了以下问题。我在一台有 5 个 IP 的服务器上正常安装了 apache/varnish,varnish 使用本地 IP 将每个请求发送到 apache(我认为这很正常,因为在后端我可以使用 php 的 $_SERVER['HTTP_X_FORWARDED_FOR'] 获取引荐来源)。
由于 apache 仅获取本地 IP,因此我无法使用 .htaccess 文件的阻止。我deny from
在 .htaccess 中的所有内容从未应用过。如果我转到端口 :81(apache 的端口),阻止将正常工作。
我需要做的是找到一种方法来阻止来自 varnish 本身的 IP 或将原始引荐来源 ID 发送回 apache,所有这些都无需重新启动 varnish(当然,如果这不可能,我将不得不这样做...)
我想要阻止的那个特定 IP 变得非常可疑......
谢谢大家
答案1
您应该在 apache 服务器上安装 mod_rpaf。这将使用 X-Forwarded-For 标头中的最后一个 IP 地址更新远程地址。在基于 debian 的系统上:
sudo apt-get install libapache2-mod-rpaf
然后重新启动 apache。
答案2
您可以使用以下方法避免重新启动 Varnish: http://technosophos.com/2010/09/09/varnish-reloading-vcl-configuration-files-varnishadm.html(感谢 alvherre 更新链接)