proxy代理,集中hosts绑定
来源:互联网 发布:mac如何pe启动 编辑:程序博客网 时间:2024/05/16 16:09
题记:
问题主要是因为自己工作的环境经常需要进行hosts绑定的操作,有时候要绑定10几个,多个环境切换非常麻烦,后来发现有的同事采用代理的方式统一绑定,实在觉得是个恢长好的办法啊,所以对代理工具就进行了比较详细调查,写下了这篇文章,文章的解决的关键问题也是如何通过代理进行hosts绑定。
以下文章是我的个人理解,不足或错误的地方敬请指正,谢谢!
代理这个词相信对大家来说都不陌生,熟悉翻墙的同学一定很熟悉。呵呵这篇文章不要说明如何找梯子,相信大家是八仙过海各有各的办法。
学习代理首先要明确两个概念:正向代理/反向代理。关于正向和反向的说明google一下资料很多。
简单理解所谓正向就是一个从内向外的访问,而所谓反向则是一个从外向内的访问。正向和反向是一个相对的概念。
简单说吧,我们知道nginx是一个非常优秀的反向代理工具,各大网站很多都在用nginx做反向代理,对于外部访问网站的用户开放的nginx反向代理服务器,而页面的生成工作则是通过内部的web服务来完成的,服务的实现方式可能千差万别。
而正向代理,则是我们一般意义的翻墙,通过代理去访问,然后从代理中返回结果,原理就是这样的。
那么何为相对呢?相对于内部的服务那么nginx就是反向代理,代理接受用户请求;而相对于用户,就是正向代理,代理用户去请求。明白了这个相对的过程,实际我们就可以让nginx成为我们的正向代理工具,而将外面的网络视为整个后端在给我们提供服务。
有了以上的理解,我们进入主题,重点说明正向代理如何实现快捷的host绑定,也是我们工作中常用的。
一. nginx,这里我默认读者有一定的nginx配置经验~~
nginx太尼玛的强大了!简直无所不能,通过nginx我们可以把HTTP协议中指定的host代理到你需要的位置,类似host绑定,类似下面:
location / {
# 一定要配置DNS
resolver 10.***;
# 把baidu重定向到google
if ($http_host ~* www\.baidu\.com.*$) {
proxy_pass http://www.google.com;
}
# 其他的直接访问
proxy_pass $scheme://$http_host;
}
当然host绑定的方式我们也可以通过设置不同的server来完成,相同的端口不同的host,从而proxy_pass到不同的位置,这种方法比if可能更灵活。
还有一点nginx我们可以配置不同的端口来重新绑定不同的host!,这样使用代理的人只要改变端口就可以直接把一组host绑定切换到另一组了!!我们在工作中可以方便进行绑定环境切换
!!!遇到的问题:
1. 我做了比较具体的测试对比,发现通过nginx代理访问网站速度和直接访问对比明显变慢!测试的网站是sina.com/126.com的。
我尝试了调整一下内容,试图提供速度,
<1> 我相信nginx绝对不是瓶颈,他的性能是无可质疑的,一定是我配置的问题,或者哪里有用错的地方,而且我使用的是内网环境,代理的网速绝对是无可质疑的
<2> 我修改了诸多配置参赛,设置缓存等但都是无效的
<3> 和squid做了对比,尼玛的,squid一点问题没有,没有什么速度差别!如果你怀疑squid的cache问题,好吧,我测试时候已经关闭了squid的cache,如果你怀疑是browser的cache问题,好吧,我每次测试前都会清空browser的cache,不管你信不信,我反正信了!
目前上面问题原因我没有能查明!希望有哪一位大虾给个解释。
2. 网上说nginx代理https貌似不行,但本人没有做太多具体测试,这里只是提一下
二. squid
通过设置hosts_file 参数来指定自己配置的host文件,从而实现hosts的批量绑定功能。squid使用相对比较简单,不用太多学习想nginx的配置知识,比较容易上手,一般大家对hosts文件格式应该已经非常熟悉了
总结一下:
1. squid不存在上面nginx 的访问变慢问题
2. squid是专门的正像代理工具,而nginx是专门的反向代理,所以某些方面squid在正像代理比较全面,https等协议支持的也恢长好
3. squid 每次修改host都需要重新加载配置,这并不需要重启squid,但是重新加载配置host文件并不是马上生效的!!有一个时间,这应该是squid本身cache了host,所以用户如果想马上生效需要,重启suqid,给个脚本
echo 'immediately stop squid: squid -k interrupt'
/home/shawn/soft.compile/root/squid-3.1.18/sbin/squid -k interrupt
echo 'sleep 2s'
sleep 2
echo 'start squid now'
4. squid hosts_file的不灵活地方,一个代理如何实现多种类型的host绑定呢??例如我们只需要修改不同的端口就可以切换代理,而不用动squid?这点nginx可以很容易做到,但是squid我没有找到方案!求解啊!基于nginx 至少可以通过开启不同的端口来完成这个功能,squid可以吗?或者其他更灵活的方式?
怎么说呢,我恢长喜欢nginx,如果nginx能满足我,我不想通过其他的方式解决,但是实际上我最后还是选择了squid,感觉他正向代理做的更好,还有一个很大的原因,就是我前面提到的速度变慢问题!求解啊!
- proxy代理,集中hosts绑定
- hosts 绑定
- 代理(Proxy)
- Proxy 代理
- Proxy 代理
- Proxy代理
- 代理proxy
- 代理(Proxy)
- 代理Proxy
- 关于hosts绑定
- linux 绑定hosts
- Windows7 hosts 绑定注意事项
- JDK Proxy代理&CGLIB代理
- java Proxy代理&cglib代理
- nginx 代理 proxy_pass /etc/hosts
- 代理(Proxy)模式
- 代理模式Proxy Design
- 代理(Proxy)模式
- php 编译错误 mcrypt.h
- 如何克服抗拒学习自己不喜欢的语言
- NYOJ--189兔子的烦恼
- VS2008 如何启动仿真器
- 在Spring下使用Acegi通过LDAP验证
- proxy代理,集中hosts绑定
- Editors Vulnerability Handbook
- IE8"开发人员工具"使用详解下(模式,JS调试,探查器)
- java动态代理
- 有技术的下电影
- 驱动视频: Windows驱动讲稿1.4 - HelloDriver2
- swift 多节点部署
- VS2005和VS2008下配置移动仿真器上网
- 递归Handler