2007年8月2日星期四

Hosts用法两则

Hosts文件是好东西,还是跨平台的,不仅可以方便局域网名称的映射、加快域名解析速度,甚至还能让你访问某些无法解析域名的网站。今天我又琢磨出这个文件的另外两种用法。

利用Hosts文件隐藏公网地址

我有一个放在公网上的地址,用apache提供的web服务,但是我并不想让它公开,而是只允许我自己用;如果架在本机,那我出门或者回家就用不了了,同理只允许ip段的访问也不方便;用一个比较"深"的地址来访问也不是什么好办法,别说spider肯定能抓到,从这里点出去的链接,referer就把你给出卖了。

解决的思路就是,利用Hosts文件作出一个只有我自己能用的"域名",当我使用这个域名访问的时候,由于本机的Hosts文件,它会解析到正确的地址,而别人或者蜘蛛或者从referer链接回来的访问,都会由于无法解析dns而失败。

当然这种做法只是一个小把戏而已,如果别人也知道域名和ip就不保密了,所以仍然需要结合其他限制访问方式使用。另外,对于只知道ip的访问,我们还是有办法的,将apache的conf如下设置:

NameVirtualHost *

DocumentRoot /var/www/apache2-default/
ServerName w3c.com DocumentRoot /path/to/some/file/ ServerName autobots.fwolf.com

这样如果不知道autobots.fwolf.com这个秘密地址,就是知道ip也进不来。另外如果把 autobots.fwolf.com这个域名再作个解析,就会更有意思了。

Hosts文件结合apache的VirtualHost创建易于调试的开发环境

这就比上面的简单多了,一般搭建项目调试环境的时候,如果管理不慎,会把服务器的设置搞得一塌糊涂,另外多项目并存的情况下,需要的环境、配置各不相同,有的还需要必须在网站根目录下运行,这种情况下,就可以用Hosts文件结合apache的virtualhost让一台开发服务器变身为多台。创意参考自虚拟主机的做法。

首先还是用hosts文件定义出别名来,比如computer1、computer2都指向一台服务器,但是这两个地址就像是在用两台电脑一样了;然后再在apache中用name方式的virtualhost定义project1、project2(每个project单独使用一个配置文件更方便,每个virtualhost还能够定制相应的环境)。

现在,知道该怎么使用了吧?要不怎么说hosts文件是个好东西呢。

Source: http://www.fwolf.com/blog/post/344