使用 Varnish(在端口 80 上)时阻止用户使用端口 8080(apache)访问网站

使用 Varnish(在端口 80 上)时阻止用户使用端口 8080(apache)访问网站

我的配置非常简单:

为了避免重复内容,我想阻止用户直接访问 apache(在端口 8080 上运行)来访问我的网站。

我已经设置了一个在端口 80 上监听的 Varnish 服务器,所以我只想使用它来避免机器人在不同的端口上索引同一个网站,这可能会导致重复内容问题。

我正在使用装有 Debian 6 的专用服务器。

我的虚拟主机如下所示:

<VirtualHost *:8080>
    ServerAdmin webmaster@localhost
    ServerName www.seek-team.com

    DocumentRoot ...
    DirectoryIndex app.php

    <Directory "/var/www/seek-team.com/current/web">
        Options -Indexes FollowSymLinks SymLinksifOwnerMatch
        AllowOverride All
        Allow from All
    </Directory>
</VirtualHost>

如何防止用户直接使用端口 8080 访问网站?(但我仍然需要 varnish 才能正确访问 apache)。

谢谢。

答案1

您可以将 apache 守护进程绑定到环回接口,并让 Varnish 连接到localhost:80。这样,varnish 就可以供全世界访问,而 apache 只能在本地访问。

清漆配置:

backend www {
.host = “localhost″;
.port = “80″;
}

Apache 配置:

Listen 127.0.0.1:8080
...    
<VirtualHost 127.0.0.1:8080>
...

答案2

最快的选择是将 Apache 实例简单地绑定到 Localhost,这样只能从该机器访问它。

<VirtualHost 127.0.0.1:8080>

或者,您可以调整 Apache 虚拟主机目录块的权限以:

Deny from all
Allow from 127.0.0.1  #IP.OF.MY.PC

这稍微灵活一些,因为您可以将自己的 IP 或网络范围添加到允许的 IP 列表中,以允许少数人直接访问以进行诊断目的。

上述两个选项都假设 Varnish 实例在同一台物理服务器上运行。

答案3

只需使用 iptables 阻止外界访问 8080 端口即可,如下所示:

 # iptables -I INPUT -p tcp --dport 80 -j DROP

 # iptables -I INPUT -s localhost -j ACCEPT

相关内容