nginx 正向代理与反向代理

一.介绍

 

反向代理让Internet上的用户能够访问局域网内的资源,中间设置一个代理服务器,以下所示,红色圈是指局域网内的站点(myweb站点是咱们的站点,例如iis)。箭头不能反过来web

正向代理客户端(咱们代理客户端)访问Internet上的站点。中间设置一个代理服务器,以下所示,红色圈是指局域网内的客户端(咱们的客户端)。箭头不能反过来。后端

 

 

总结:服务器

  正向代理是指:咱们表明局域网客户端,向Internet上获取资源,中间正向代理。性能

  反向代理是指:咱们表明局域网服务端,Internet上的客户端请求资源,中间使用反向代理。url

      

  反向代理是最多见的重要功能之一,应用普遍,涉及的配置指令比较多。ngx提供的反向代理也是比较高效的,它能同时接收客户端链接由worker_processes指令和worker_connections指令决定。spa

  

  反向代理与正向代理都有http块,server块或者location块。区别是单独配置server块用来反向代理或正向代理。3d

 

二.反向代理的基本设置的21个指令

   讲最重要的一个proxy_pass指令代理

  1.proxy_pass指令code

    被代理服务器的地址(分发到如:IIS),能够是主机名称,ip地址加端口号等形式。语法结构为server

    proxy_pass url;

    传输协议一般是http://,或https://。例如

    proxy_pass  http://www.myweb.name/uri;

    proxy_pass  http://localhost:8080/uri;

    proxy_pass  http://192.168.2.211:8080/uri;

    若是被代理服务器是一组服务器的话,能够用upstream指令配置后端服务器组,作高可用负载分发,例如:

upstream proxy_svrs
{
    server http://192.168.1.1:8001;
    server http://192.168.1.2:8001;
    server http://192.168.1.3:8001;
}

server
{
      ...
      listen 80;
      server_name  www.myweb.name;
      location /
      {
           proxy_pass proxy_svrs;
      }  
}

  注意一点:在服务器组内指明了传输协议 http://,  在proxy_pass指令中就不须要指明了。反之若是服务器组内没有https://,那么 在proxy_pass指令中就须要指明,以下所示:

upstream proxy_svrs
{
    server 192.168.1.18001;
    server 192.168.1.28001;
    server 192.168.1.38001;
}

server
{
      ...
      listen 80;
      server_name  www.myweb.name;
      location /
      {
           proxy_pass http://proxy_svrs;
      }  
}

   当客户端访问http://www.myweb.name时,就会进入location中。再看一个示例:

server
{
      ...
      listen 80;
      server_name  www.myweb.name;
      location /server/ { proxy_pass http://proxy_svrs01;  } 
    location / 
    {
      proxy_pass http:
//proxy_svrs; }
    }

  当客户端访问http://www.myweb.name/server时,就会匹配location /server/ 块中。

  

参考

  Nginx高性能Web服务器详解 第7章

相关文章
相关标签/搜索