1、前言

  最近工作中用到反向代理,发现网络代理的玩法还真不少,网络背后有很多需要去学习。而在此之前仅仅使用了过代理软件,曾经为了访问google,使用了代理软件,需要在浏览器中配置代理的地址。我只知道有代理这个概念,并不清楚代理还有正向和反向之分,于是赶紧学习一下,补充一下知识。首先弄清楚什么是正向代理,什么是反向代理,然后是二者在实际使用中展示的方式是什么样的,最后总结一下正向代理用来做什么,反向代理可以做什么。

2、正向代理

  正向代理类似一个跳板机,代理访问外部资源。

举个例子:

  我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。从网站的角度,只在代理服务器来取内容的时候有一次记录,有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站。

  客户端必须设置正向代理服务器,当然前提是要知道正向代理服务器的IP地址,还有代理程序的端口。

  例如之前使用过这类软件例如CCproxy,http://www.ccproxy.com/ 需要在浏览器中配置代理的地址。

总结来说:正向代理 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。

  正向代理的用途:

  (1)访问原来无法访问的资源,如google

(2) 可以做缓存,加速访问资源

  (3)对客户端访问授权,上网进行认证

  (4)代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息

例如CCProxy用途:

3、反向代理

  初次接触方向代理的感觉是,客户端是无感知代理的存在的,反向代理对外都是透明的,访问者者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问。

  反向代理(Reverse Proxy)实际运行方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

反向代理的作用:

(1)保证内网的安全,可以使用反向代理提供WAF功能,阻止web攻击

大型网站,通常将反向代理作为公网访问地址,Web服务器是内网

(2)负载均衡,通过反向代理服务器来优化网站的负载

4、二者区别

借用知乎两张图来表达:https://www.zhihu.com/question/24723688

5、nginx的反向代理

  nginx支持配置反向代理,通过反向代理实现网站的负载均衡。这部分先写一个nginx的配置,后续需要深入研究nginx的代理模块和负载均衡模块。

nginx通过proxy_pass_http 配置代理站点,upstream实现负载均衡。

参考资料:

http://z00w00.blog.51cto.com/515114/1031287

http://blog.csdn.net/m13666368773/article/details/8060481

6、nginx的反向代理

nginx同样可以实现代理上网的功能,配置如下:

user www;
worker_processes 1;
error_log /var/log/nginx/error.log debug; events {
use epoll;
worker_connections 1024;
} http {
resolver 8.8.8.8;
server {
listen 8088;
location / {
proxy_pass http://$http_host$request_uri;
}
}
}

nginx实现代理上网,有三个关键点必须注意,其余的配置跟普通的nginx一样
1.增加dns解析resolver

2.增加无server_name名的server

3.proxy_pass指令

具体实现步骤:
1.把如下配置填到你的配置文件http作用域,

2.重启nginx使配置文件生效

3.设置ie代理

4.可以使用代理上网了。

可以访问http://ip.quancha.cn检测代理是否生效
使用nginx代理上网后

转自:http://www.cnblogs.com/Anker/p/6056540.html

最新文章

  1. AngularJS依赖注入
  2. 用UWP实现一个和win10设置页面类似的布局
  3. Nancy 学习-自宿主 继续跨平台
  4. 【FOL】第一周
  5. equals()和hashCode()之间的关系
  6. jqGrid 最常用的属性和事件,供平时参考(转)
  7. 【URAL 1297】Palindrome 最长回文子串
  8. EL表达式对数组、集合操作
  9. c风格字符串,字符串字面值,c++字符串
  10. 版本管理工具SVN学习(一):简单的SVN命令,兼对比Git
  11. localStorage和sessionStorage总结以及区别
  12. Maple trees(最小覆盖圆)
  13. jmeter学习记录--10--二次开发环境搭建
  14. .Net代码控制PrivateBinPath和ConfigurationFile的位置
  15. @Html.xxxxxFor() 规范写法
  16. python抢火车票 短信通知
  17. JS知识整理之 Call&Apply方法
  18. 分享微信开发Html5轻游戏中的几个坑
  19. JSON.stringify报cyclic object value错误
  20. tcp ip三次握手链接和四次挥手断开

热门文章

  1. solr-4.10.2版本使用tomcat7部署
  2. 开源应用框架BitAdminCore:更新日志20180605
  3. ASP.NET MVC学习目录
  4. 控制 MediaElement(播放、暂停、停止、音量和速度)
  5. iOS 获取 UITabViewController 和 UINavigationController 的图标位置
  6. 【文文殿下】洛谷P2408 不同子串个数
  7. linux中rc.d目录下的文件
  8. linux 编译PHP memcache扩展
  9. ReactNative 打包 APK
  10. 安装vuecli和使用elememtUi