有些网站因为一些因素,比如想把网站的数据源隐藏起来,让外界通过域名确定不了网站的ip,当然,这是指一般情况,一定要找到的话也是有办法的。
原理介绍:
比如有A和B两个服务器,都在公网上,网站的数据全部在B服务器上,为了防止B服务器受到攻击或者网站被挂马,就想把B服务器保护起来,这时,就可以用A服务器做代理服务器,域名指向A,但是A上并没有网站原始数据,用户访问网站的时候,通过域名请求到A服务器,A服务器将请求去发到B服务器,拿到B服务器返回回来的结果后,A服务器将数据做修改,网页的头信息等等,修改完成后再返回给用户,用户就看到结果了。
如果两台服务器之间的网速不是太快的话,肯定会对用户的感受有一定的影响,等待的时间会稍长,这时,就有另一个技术出现了,数据缓存,就是A服务器将请求过的数据缓存到自己本地,有两种模式,内存缓存和硬盘缓存,内存缓存肯定要更快,用户体验会更好,但是内存受大小的限制,对于数据大的网站来说,不太现实,就只能是硬盘缓存了,当然,两种缓存也是可以结合的。缓存也有他的弱点,就是数据更新周期,比如一个页面,B服务器上的已经更新了,但是你访问域名到A服务器时,A上边可能有这个页面的缓存,这时A会将缓存的,旧的数据发给用户,就存在一个时间差问题,可以设置一个缓存周期,比如一小时,那么A服务器缓存此页面到一个小时的时候,你再去访问,A就会重新去请求B而拿到新的数据,并将新一点的数据缓存到本地。
实现:
目前开源的项目有apache http server,可以实现此功能,并且配置不复杂,在A服务器上安装apache服务器,
apache服务器去这里下载:http://www.apache.org/
默认安装完就可以,然后修改apache安装目录下conf/httpd.conf 文件,打开要用到的两个模块:
mod_proxy.so(module_proxy)
mod_proxy_http.so(module_proxy_http)
搜索到这两个模块的行,将行最前边的“#”删除就可以了
然后 在文件的最后添加: