三 Nginx配置及應用場景之高階配置

2021-08-31 23:47:18 字數 3838 閱讀 9602

一、nginx反向**

反向**(reverse proxy)方式是指以**伺服器來接受internet上的連線請求,然後將請求**給內部網路上的伺服器;並將從伺服器上得到的結果返回給internet上請求連線的客戶端,此時**伺服器對外就表現為乙個伺服器。

通常的**伺服器,只用於**內部網路對internet的連線請求,客戶機必須指定**伺服器,並將本來要直接傳送到web伺服器上的http請求傳送到**伺服器中。當乙個**伺服器能夠**外部網路上的主機,訪問內部網路時,這種**服務的方式稱為反向**服務。

乙個通過httpproxy模組實現反向**的簡單配置:

server 

} 此配置實現在ie中輸入即會調轉到134.32.28.134:8090中

upstream模組配置實現:

server 134.32.28.134:8090;

} server

}

httprewrite模組配置實現

server

二、nginx負載均衡

nginx本身提供輪詢(round robin)、使用者ip雜湊(ip_hash)和指定權重三種方式負載均衡策略, 另外也出現第三方負載均衡模組fair和url_hash,預設情況下,nginx以輪詢作為負載均衡策略。

輪詢與指定權重策略

簡單配置如下:

server 134.32.28.134:8090 weight=5;

server 134.32.28.134:8091 weight=2;} 

weight是設定權重,用於後端伺服器效能不均的情況。 輪詢策略的缺點是某一時段內的一連串訪問可能都是由同乙個使用者a發起的,那麼第一次a的請求可能是 8090,而下一次是 8091,然後是 8090、8091…… 在大多數應用場景中,這樣並不高效,並且如果後台伺服器沒有實現對session的共享,會導致session沒有共享的。當然,也正因如此,nginx 為你提供了乙個按照ip來hash的方式,這樣每個客戶端的訪問請求都會被甩給同乙個後端伺服器。

ip雜湊策略

配置如下:

ip_hash;

server 134.32.28.134:8090;

server 134.32.28.134:8091;} 

這種策略中,用於進行hash運算的key是客戶端的ip位址。這樣的方式保證乙個客戶端每次請求都將到達同乙個後台主機。當然,如果所hash到的後台伺服器當前不可用,則請求會被轉移到其他伺服器。

down機、重試策略及備份

當某個乙個伺服器暫時性的宕機(down)時,你可以使用「down」來標示出來,並且這樣被標示的 、伺服器就不會接受請求去處理。如:

server 134.32.28.134:8090;

server 134.32.28.134:8091 down;} 

可以為每個 backend 指定最大的重試次數,和重試時間間隔。所使用的關鍵字是 max_fails 和 fail_timeout。如下所示:

server 134.32.28.134:8090;

server 134.32.28.134:8091 max_fails=3 fail_timeout=30s;} 

可以使用「backup」關鍵字。當所有的非備機(non-backup)都宕機(down)或者繁忙(busy)的時候,就只使用由 backup 標註的備機。backup不能和ip_hash關鍵字一起使用。舉例如下:

server 134.32.28.134:8090;

server 134.32.28.134:8091;

server 134.32.28.134:8092 backup;} 

fair(nginx需安裝第三方模組,openresty已經整合)

fair按後端伺服器的響應時間來分配請求,響應時間短的優先分配,配置如下:

server 134.32.28.134:8090;

server 134.32.28.134:8091;

fair;} 

url_hash(nginx需安裝第三方模組)

url_hash按訪問url的hash結果來分配請求,使每個url定向到同乙個後端伺服器,後端伺服器為快取時比較適用。另外,在upstream中加入hash語句後,server語句不能寫入weight等其他引數。

server 134.32.28.134:8090;

server 134.32.28.134:8091;

hash  $request_uri;

hash_method  crc32;} 

三、nginx靜態快取

nginx過proxy cache可以使其對靜態資源進行快取。其原理就是把靜態資源按照一定的規則存在本地硬碟,並且會在記憶體中快取常用的資源,從而加快靜態資源的響應。

http段設定

proxy_connect_timeout 600;  #nginx跟後端伺服器連線超時時間(**連線超時)

proxy_read_timeout    600;  #連線成功後,後端伺服器響應時間(**接收超時)

proxy_send_timeout    600;  #後端伺服器資料回傳時間(**傳送超時)

proxy_buffer_size     32k;  #設定**伺服器(nginx)儲存使用者頭資訊的緩衝區大小

proxy_buffers         4 32k;#proxy_buffers緩衝區,網頁平均在32k以下的話,這樣設定

proxy_busy_buffers_size  64k;           #高負荷下緩衝大小(proxy_buffers*2)

proxy_temp_file_write_size  64k;       #設定快取資料夾大小,大於這個值,將從upstream伺服器傳

proxy_temp_path /home/spdev/nginx/openresty/local/nginx/proxy_temp;

proxy_cache_path /home/spdev/nginx/openresty/local/nginx/cache levels=1:2 

keys_zone=cache_one:200m inactive=1d max_size=30g;

#levels設定目錄層次,keys_zone設定快取名字和共享記憶體大小 

#inactive在指定時間內沒人訪問則被刪除在這裡是1天,max_size最大快取空間

server段設定

# server虛擬主機配置                         

server 

location /mytest

location /proxy

#靜態檔案快取

原文: 

Nginx 應用場景

三 nginx配置反向 四 負載均衡 http伺服器。nginx是乙個http服務可以獨立提供http服務。可以做網頁靜態伺服器。虛擬主機。可以實現在一台伺服器虛擬出多個 例如個人 使用的虛擬機器。反向 負載均衡。當 的訪問量達到一定程度後,單台伺服器不能滿足使用者的請求時,需要用多台伺服器集群可以...

Nginx 主要應用場景

nginx在不依賴第三方模組能做什麼 1.反向 2.負載均衡 3.http伺服器 包含動靜分離 4.正向 反向 反向 應該是nginx做的最多的一件事了。反向 reverse proxy 方式是指以 伺服器來接受internet上的連線請求,然後將請求 給內部網路上的伺服器,並將從伺服器上得到的結果...

Nginx主要應用場景 必讀

反向 負載均衡 http伺服器 包含動靜分離 正向 以上就是我了解到的nginx在不依賴第三方模組能處理的事情,下面詳細說明每種功能怎麼做。下面貼上一段簡單的實現反向 的 server 儲存配置檔案後啟動nginx,這樣當我們訪問localhost的時候,就相當於訪問 localhost 8080 ...