题记:
问题主要是因为自己工作的环境经常需要进行hosts绑定的操作,有时候要绑定10几个,多个环境切换非常麻烦,后来发现有的同事采用代理的方式统一绑定,实在觉得是个恢长好的办法啊,所以对代理工具就进行了比较详细调查,写下了这篇文章,文章的解决的关键问题也是如何通过代理进行hosts绑定。
以下文章是我的个人理解,不足或错误的地方敬请指正,谢谢!
代理这个词相信对大家来说都不陌生,熟悉翻墙的同学一定很熟悉。呵呵这篇文章不要说明如何找梯子,相信大家是八仙过海各有各的办法。
学习代理首先要明确两个概念:正向代理/反向代理。关于正向和反向的说明google一下资料很多。
简单理解所谓正向就是一个从内向外的访问,而所谓反向则是一个从外向内的访问。正向和反向是一个相对的概念。
简单说吧,我们知道nginx是一个非常优秀的反向代理工具,各大网站很多都在用nginx做反向代理,对于外部访问网站的用户开放的nginx反向代理服务器,而页面的生成工作则是通过内部的web服务来完成的,服务的实现方式可能千差万别。
而正向代理,则是我们一般意义的翻墙,通过代理去访问,然后从代理中返回结果,原理就是这样的。
那么何为相对呢?相对于内部的服务那么nginx就是反向代理,代理接受用户请求;而相对于用户,就是正向代理,代理用户去请求。明白了这个相对的过程,实际我们就可以让nginx成为我们的正向代理工具,而将外面的网络视为整个后端在给我们提供服务。
以上转载。
当通过http://www.XXX.com访问时, 实际上代理到了http://192.168.xxx.yyy:8080/Action/
server {
listen 80;
server_name www.XXX.com; # 通过Windows的hosts配置来DNS这个域名
location / {
proxy_pass http://192.168.xxx.yyy:8080/Action/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
反向代理:即上面的80端口只监听从外至内的访问中的80端口。
Windows 中Hosts文件的作用:
浏览器输入域名,如:www.sina.com.
windows会先查找hosts文件中是否已经存在此域名的映射,如果不存在,再通过dns域名解析服务器去解析这个域名,得到对应的新浪的IP地址。再通过这个ip地址访问新浪网。
目的就是一个:得到IP地址。
具体参考:http://wenku.baidu.com/view/180738bfc77da26925c5b0c4.html
更改nginx的配置文件后,在去访问浏览器,此时,浏览器存在缓存,可能不会立即应用nginx的配置,即使 nginx restart也无济于事,所以必须清楚浏览器缓存再执行。
server {
listen 80;
server_name www.163.com;# 通过Windows的hosts配置来DNS这个域名
location / {
proxy_pass http://sina.com;
proxy_redirect off;
}
}
server {
listen 80;
server_name www.baidu.com;# 通过Windows的hosts配置来DNS这个域名
location / {
proxy_pass http://www.google.com;
proxy_redirect off;
}
}
结果:输入www.163.com会跳转到新浪网,输入www.baidu.com会跳转到google首页。
hosts中的映射关系:
127.0.0.1 www.163.com
127.0.0.1 www.baidu.com