我的配置非常简单:
为了避免重复内容,我想阻止用户直接访问 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