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章

相關文章
相關標籤/搜索