Nginx做爲代理服務

代理服務簡介

 什麼是代理服務html

  •  代理-代理辦理(代理理財、代理收貨、代理購物等等)。

HTTP請求沒有代理服務的模型圖nginx

HTTP請求具備代理服務的模型圖後端

 

 代理分類瀏覽器

  • 正向代理
  • 反向代理

正向代理緩存

  •     當局域網不能上網時,能夠在瀏覽器設置正向代理知足上網要求
  •     當咱們想經過FQ訪問國外網站查詢資料,能夠在瀏覽器設置正向代理
  •     當服務器只容許某個端的IP訪問(好比googe),因此咱們須要請求運行訪問的那個客戶端,在讓其幫咱們轉發請求

正向代理模型圖服務器

 

反向代理app

  •   服務端有不少工程模塊的時候,須要經過Nginx代理實現流量的分發

反向代理模型圖jsp

 

 反向代理模型圖解釋:分佈式

  •     客戶端須要本身去請求DNS獲取服務端地址;
  •     代理是爲服務端服務的;
  •     紅色虛線表示防火牆;
  •     配置在服務端,分發客戶端請求到不一樣的服務端
  •     主要用於服務器集羣分佈式部署的狀況下,反向代理隱藏了服務器的信息

代理區別ide

  • 區別在於形式上服務的對象不同
  • 正向代理代理的對象是客戶端,爲客戶端服務
  • 反向代理代理的對象是服務端,爲服務端服務

 

代理模式和模塊介紹

Nginx可支持的代理協議

 

 

常見的Nginx做爲反向代理支持的協議

 

反向代理模式與Nginx代理模塊

 

常見的Nginx做爲正向代理支持的協議

 

注意:

  • 不能支持使用HTTPS協議
  • Nginx使用HTTP協議做爲正向代理的協議
  • Nginx使用正向代理範圍比較窄

 

nginx 反向代理

代理服務proxy_pass配置語法

  • Syntax: proxy_pass URL;
  • Default: —
  • Context: locationif in locationlimit_except

反向代理配置場景模擬

假設有兩個服務一個對外暴露,一個不對外暴露只能內部訪問,對外暴露的端口是80,在內部訪問的端口是8080,經過訪問對外暴露的80服務來訪問8080服務

(1)建立兩個HTML靜態資源文件

    http_proxy.html文件

<h1>Welcome to http_proxy!!!!</h1>

 http_proxy_redirect.html 

 <h1>Welcome to http_proxy_redirect_81!!!!</h1>

(2) 編輯location

配置對外暴露的代理

server {
    listen       80;
    server_name  www.zhangbiao.com;
   location ~ /test_proxy.html$ {
   proxy_pass http://127.0.0.1:8080;
 }

內部才能訪問的服務

server {
    listen       8080;
    server_name  127.0.0.1;
    location / {
        root   /opt/app/code2;
        index  http_proxy_redirect.htm;
    }

  

Nginx做爲代理服務_代理配置語法補充

proxy-緩衝區

  • Syntax: proxy_buffering on | off;  
  • Default: proxy_buffering on;
  • Context: http, server, location

擴展:

       proxy_buffer_size-設置緩衝區大小(內存頁大小)

       proxy_buffers-設置緩衝區數量和大小(內存頁數量和大小)

       proxy_busy_buffers_size-設置最大緩衝區大小

proxy-重定向

  •  Syntax:  proxy_redirect default;  proxy_redirect off;  proxy_redirect redirect replacement;
  •  Default: proxy_redirect default;
  •  Context: http, server, location

proxy-頭信息

  • Syntax: proxy_set_header field value;
  • Default: proxy_set_header Host $proxy_host;  proxy_set_header Connection close;
  • Context: http, server, location

 擴展:

       proxy_hide_header-設置隱藏頭信息字段

       proxy_set_body-設置請求體返回信息

proxy-超時

  • Syntax: proxy_connect_timeout time;
  • Default: proxy_connect_timeout 60s;
  • Context: http, server, location

擴展:

       proxy_read_timeout-從代理服務器讀取響應的超時時間

       proxy_send_timeout-設置將請求傳輸到代理服務器的超時時間

代理配置及配置規範

代理通用配置

    location / {
        proxy_pass http://127.0.0.1:8080;
        include proxy_params;
    }

proxy_params

proxy_redirect default;

proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;

proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;

proxy_buffer_size 32k;
proxy_buffering on;
proxy_buffers 4 128k;
proxy_busy_buffers_size 256k;
proxy_max_temp_file_size 256k;

代理配置詳解: 

 proxy_redirect default; 

  • 沒有重定向就配置成默認,除非後端返回301狀況下設置成具體重定向地址  

 proxy_set_header Host $http_host;

 proxy_set_header X-Real-IP $remote_addr;

  • 設置字段從新定義或附加到傳遞給代理服務器的請求頭

proxy_connect_timeout 30;

  • 設置代理鏈接超時時間

proxy_read_timeout 60;

  • 設置從代理服務器讀取響應的超時時間

 proxy_send_timeout 60;

  • 設置向代理服務器發送請求的超時時間

 proxy_buffering on;

  • 設置啓用或禁用來自代理服務器的響應緩衝

proxy_buffer_size 32k;

  • 設置用於讀取從代理服務器接收的響應的第一部分的緩衝區的大小

proxy_buffers 4 128k

  • 設置用於從代理服務器讀取響應的緩衝區的數量和大小,用於單個鏈接。

 proxy_busy_buffers_size 256k;

  • 設置當啓用來自代理服務器的響應緩衝時,限制可能忙於向響應客戶端發送響應的緩衝區的總大小,而響應還沒有徹底讀取。

proxy_max_temp_file_size 256k;

  • 設置當啓用來自代理服務器的響應緩衝,而且整個響應不適合proxy_buffer_size和proxy_buffers指令設置的緩衝區時,響應的一部分能夠保存到臨時文件中。 該指令設置臨時文件的最大大小。 一次寫入臨時文件的數據大小由proxy_temp_file_write_size指令設置。

 

    location / {
        index index.jsp;
        proxy_pass   http://hello;    #在這裏設置一個代理,和upstream的名字同樣
        #如下是一些反向代理的配置可刪除
        proxy_redirect             off; 
        #後端的Web服務器能夠經過X-Forwarded-For獲取用戶真實IP
        proxy_set_header           Host $host; 
        proxy_set_header           X-Real-IP $remote_addr; 
        proxy_set_header           X-Forwarded-For $proxy_add_x_forwarded_for; 
        client_max_body_size       10m; #容許客戶端請求的最大單文件字節數
        client_body_buffer_size    128k; #緩衝區代理緩衝用戶端請求的最大字節數
        proxy_connect_timeout      300; #nginx跟後端服務器鏈接超時時間(代理鏈接超時)
        proxy_send_timeout         300; #後端服務器數據回傳時間(代理髮送超時)
        proxy_read_timeout         300; #鏈接成功後,後端服務器響應時間(代理接收超時)
        proxy_buffer_size          4k; #設置代理服務器(nginx)保存用戶頭信息的緩衝區大小
        proxy_buffers              4 32k; #proxy_buffers緩衝區,網頁平均在32k如下的話,這樣設置
        proxy_busy_buffers_size    64k; #高負荷下緩衝大小(proxy_buffers*2)
        proxy_temp_file_write_size 64k; #設定緩存文件夾大小,大於這個值,將從upstream服務器傳
    }
}
相關文章
相關標籤/搜索