我的configuration很简单:
为了避免重复的内容,我想阻止用户通过直接点击apache(这是运行在端口8080),我的网站上。
我已经设置了一个监听80端口的Varnish服务器,所以我只想使用这个来避免bot在不同的端口上索引同一个网站,这可能会导致重复的内容问题。
我正在使用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直接访问网站? (但我仍然需要清漆正确地打Apache)。
谢谢。
你可以绑定apache守护进程到loopback接口,并使Varnish连接到localhost:80 。 因此,清漆可以访问世界,而Apache只能在本地访问。
清漆configuration:
backend www { .host = “localhost″; .port = “80″; }
Apacheconfiguration:
Listen 127.0.0.1:8080 ... <VirtualHost 127.0.0.1:8080> ...
最简单的select是简单地将Apache实例绑定到本地主机,所以它只能从该机器访问。
<VirtualHost 127.0.0.1:8080>
或者,你可以调整你的Apache虚拟主机目录块的权限来:
Deny from all Allow from 127.0.0.1 #IP.OF.MY.PC
这稍微更灵活一些,因为您可以将自己的IP或networking范围添加到允许的IP列表中,以允许select几个直接访问用于诊断目的。
上面的两个选项都假定Varnish实例在同一个物理服务器上运行。
简单地用iptables阻止8080端口,如下所示:
# iptables -I INPUT -p tcp --dport 80 -j DROP # iptables -I INPUT -s localhost -j ACCEPT