nginx正向代理与反向代理

 

 

来源:https://www.jianshu.com/p/ae76c223c6ef

一、正向代理和反向代理的概念

  正向代理的概念

  • 正向代理:也就是传说中的代理,他的工作原理就像一个跳板,简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我,从网站的角度,只在代理服务器来取内容的时候有一次记录,有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站。
  • 结论就是 :正向代理 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。就像要访问google用vpn代理FQ去访问(用户知道要访问真正的服务器

  反向代理的概念

  • 反向代理:例用户访问 http://www.example.com/readme
    www.example.com上并不存在readme页面,他是偷偷从另外一台服务器上取回来,然后作为自己的内容吐给用户,但用户并不知情,这里所提到的 www.example.com 这个域名对应的服务器就设置了反向代理功能。
  • 结论就是:反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理 的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容 原本就是它自己的一样。(用户不知道要访问真正的服务器
  以租房为例解释正向代理和反向代理:
  正向代理:客户端 <一> 代理 一>服务端

  A(客户端)想租C(服务端)的房子,但是A(客户端)并不认识C(服务端)租不到。

  B(代理)认识C(服务端)能租这个房子所以你找了B(代理)帮忙租到了这个房子。

  这个过程中C(服务端)不认识A(客户端)只认识B(代理)
  C(服务端)并不知道A(客户端)租了房子,只知道房子租给了B(代理)。

  反向代理:客户端 一>代理 <一> 服务端

  A(客户端)想租一个房子,B(代理)就把这个房子租给了他。

  这时候实际上C(服务端)才是房东。

  B(代理)是中介把这个房子租给了A(客户端)。

  这个过程中A(客户端)并不知道这个房子到底谁才是房东
  他都有可能认为这个房子就是B(代理)的

  由上的例子我们可以知道正向代理和反向代理的区别在于代理的对象不一样,正向代理的代理对象是客户端,反向代理的代理对象是服务端。

二、正向代理和反向代理配置

  正向向代理配置
  访问A服务器的ip不是118.126.106.11(B代理服务器)则返回403
  
  B服务器(代理服务器)/etc/nginx/conf.d/default.conf。添加resolver和proxy_pass,设置如下
  

   反向代理配置

  首先在/etc/nginx/conf.d/下新建一个test.conf

   

  可以看到我server里listen的8080端口,但是我的服务器本身不对外开放8080端口,只开放了80端口。所以此时访问test.html是访问不到的

   

  然后我们打开/etc/nginx/conf.d/default.conf 添加proxy_pass设置如下

  

  我们设置当匹配test.html结尾的URL时就去代理访问本机的8080端口。为了对比我们先注释掉,然后直接80端口访问以下test.htl

  

  可以看到此时返回的404.这时候取消注释reload以下nginx然后用80端口访问test.html

  

  此时便可访问8080端口配置的资源。

  以上便是完成了一个反向代理的演示,这个过程中我们可以知道,客户端想要访问的是test.html,但是test.html实际上是8080端口下配置的,中间经过了代理才能拿到。也就是客户端并不知道中间经历了什么代理过程,只有服务端知道。客户端只知道他拿到了test.html也就是8080端口下配置的资源内容。

 三、总结

  正向代理的代理对象时客户端,反向代理的代理对象时服务端。代理服务器站在客户端那边就是正向代理,代理服务器站在原始服务器那边 就是反向代理。nginx通过proxy_pass可以设置代理服务。

posted @ 2019-04-30 16:58  李松伟  阅读(3019)  评论(1编辑  收藏  举报