浅谈反向代理
什么是反向代理?
我们来看一下Wiki百科中给出的解释为:
在计算机网络中,反向代理是代理服务器的一种。服务器根据客户端的请求,从其关系的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得知反向代理的IP地址,而不知道在代理服务器后面的服务器簇的存在。
这个定义可能有难懂,我们可以用图的方式表现出来:
需要注意的是,代理服务器与网站服务器是被圈在一起的。当用户与代理服务器圈在一起时,为正向代理。
反向代理有什么作用?
以下来自Wiki中文:
- 对客户端隐藏服务器(簇)的IP地址
- 安全:作为应用层防火墙,为网站提供对基于Web的攻击行为(例如DoS/DDoS)的防护,更容易排查恶意软件等
- 为后端服务器(簇)统一提供加密和SSL加速(如SSL终端代理)
- 对于静态内容及短时间内有大量访问请求的动态内容提供缓存服务
- 对一些内容进行压缩,以节约带宽或为网络带宽不佳的网络提供服务
- 减速上传
- 为在私有网络下(如局域网)的服务器簇提供NAT穿透及外网发布服务
- 提供HTTP访问认证[2]
- 突破互联网封锁(不常用,因为反向代理与客户端之间的连线不一定是加密连线,非加密连线仍有遭内容审查进而遭封禁的风险;此外面对针对域名的关键字过滤、DNS缓存污染/投毒攻击乃至深度数据包检测也无能为力)
从Wiki中文网给出的作用来看,反向代理一般用于企业。但是对于个人来说,有用吗?答案是有的。
早在几年前,就有很多小伙伴开始尝试使用nginx反向代理Google,用于查阅学习资料。只需一台服务器,一个域名,安装并配置好nginx,就可以开始愉快的学习了。不过不推荐使用别人配置好的服务器,安全是个问题。可以自己尝试做一个反向代理服务器,也可以锻炼下自己在linux平台操作的熟练度。
除了上述的使用方法,还有一些投机取巧的人,使用反向代理“偷”别人的网站。这是怎么回事?我慢慢告诉你。
比如一个苦逼的程序员做了个视频网站,并且靠着投放的广告赚了些钱,小偷眼红了,却又懒得做,于是,便使用反向代理将程序员的视频站给偷了过来。(你说,这小偷也赚不到钱啊。)并且!并且将广告换成了小偷自己的,而且还把视频站的名字给改了。
你觉得这一切有些不可思议,然而事实上这确实是发生过的。nginx中有一个插件(具体是什么模块,有兴趣的可以搜索下),可以动态替换原网站内容。小偷就是这么“偷”走的网站。
最后希望这篇文章能对你理解反向代理有帮助,还有要合理使用互联网技术。做一个知法守法爱法的好公民。
-------欢迎大家加入我的无限容量团队网盘,点我申请,共同学习,共同进步。