Hosts用法两则
授权方式:署名,非商业用途,保持一致,转载时请务必以超链接(http://www.fwolf.com/blog/post/344)的形式标明文章原始出处和作者信息及本声明。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记录就只会在这台主机上有效。
![[Bloglines]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/bloglines.png)
![[co.mments]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/comments.png)
![[del.icio.us]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/delicious.png)
![[Digg]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/digg.png)
![[diigo]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/diigo.png)
![[Facebook]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/facebook.png)
![[Furl]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/furl.png)
![[Google]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/google.png)
![[MySpace]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/myspace.png)
![[Reddit]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/reddit.png)
![[Rojo]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/rojo.png)
![[Slashdot]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/slashdot.png)
![[StumbleUpon]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/stumbleupon.png)
![[Technorati]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/technorati.png)
![[Windows Live]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/windowslive.png)
![[Yahoo!]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/yahoo.png)
![[Email]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/email.png)
August 4th, 2007 at 5:31:06
第一种方法挺不错的,厉害。
[Reply]
August 7th, 2007 at 10:13:41
动态载入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下好像是只读属性
[Reply]
August 7th, 2007 at 11:22:12
@kevin 有没有尝试过script对象的src属性?也可以查一下ecmascript文档,看看属性是否只读的。
[Reply]