Hosts用法两则

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

利用Hosts文件隐藏公网地址

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

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

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

NameVirtualHost *
<VirtualHost *>
    DocumentRoot /var/www/apache2-default/
    ServerName w3c.com
</VirtualHost>
<VirtualHost *>
    DocumentRoot /path/to/some/file/
    ServerName autobots.fwolf.com
</VirtualHost>

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

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

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

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

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

Update @ 2007-08-09

MT主机用户可以在Domain -> DNS Settings中添加假的A记录,只要没有用MT来作dns服务器,那么这条A记录就只会在这台主机上有效。

3 thoughts on “Hosts用法两则”

  1. 动态载入js并执行(未成功)这篇 深受启发 谢谢 不过我如果不是外部调用JS文件 var s = document.createElement(“script”); s.type=”text/javascript”; s.innerHTML = “alert(1)”; document.body.appendChild(s); 这样在FIREFOX下OK,在IE下就出错了 有没解决方法,script的innerHTML 在IE下好像是只读属性

Leave a Reply

Your email address will not be published. Required fields are marked *