nginx常用模組歸納

2021-08-23 14:05:08 字數 4281 閱讀 5701

目錄

nginx功能詳解... 2

一、proxy_pass. 2

二、rewrite. 3

三、log_format. 4

四、ssl證書加密配置... 5

五、sendfile. 6

六、keepalive_timeout. 7

七、gzip. 7

八、客戶端上傳檔案限制... 7

九、worker_processes和worker_connections. 8

十、stream模組... 9

在nginx中配置proxy_pass****時,如果在proxy_pass後面的url加/,表示絕對根路徑;如果沒有/,表示相對路徑,把匹配的路徑部分也給**走

。 假設下面四種情況分別用

進行訪問。

第一種: location /proxy/

**到url:

第二種(相對於第一種,最後少乙個/ )

location /proxy/

**到url:

第三種:

location /proxy/

**到url:

第四種(相對於第三種,最後少乙個/ )

location /proxy/

**到url:

第五種 配合

upstream模組

如果乙個網域名稱可以解析到多個位址,那麼這些位址會被輪流使用,此外,還可以把乙個位址指定為

server group

upstream fasf.com

server  

x_forward_for欄位表示該條http請求是有誰發起的?如果反向**伺服器不重寫該請求頭的話,那麼後端真實伺服器在處理時會認為所有的請求都來在反向**伺服器,如果後端有防攻擊策略的話,那麼機器就被封掉了(顯示真實訪問ip)

syntax: rewrite regex replacement [flag]
rewrite由ngx_http_rewrite_module標準模組支援是實現url重定向的重要指令,他根據regex(正規表示式)來匹配內容跳轉到replacement,結尾是flag標記

簡單的小例子:

常用正規表示式regex

字元    描述

\       將後面接著的字元標記為乙個特殊字元或者乙個原義字元或乙個向後引用

^       匹配輸入字串的起始位置

$       匹配輸入字串的結束位置

*       匹配前面的字元零次或者多次

+       匹配前面字串一次或者多次

?       匹配前面字串的零次或者一次

.       匹配除「\n」之外的所有單個字元

(pattern)       匹配括號內的pattern

rewrite 最後一項flag引數:

標記符號        說明

last        本條規則匹配完成後繼續向下匹配新的location uri規則

break       本條規則匹配完成後終止,不在匹配任何規則

redirect        返回302臨時重定向

permanent       返回301永久重定向

在反向**網域名稱的使用,在tomcat中配置多個專案需要掛目錄的使用案例:

server

location /

其中name表示定義的格式名稱,format表示定義的格式樣式。

log_format有乙個預設的、無須設定的combined日誌格式設定,相當於apache的combined日誌格式,其具體引數如下:

也可以自定義乙份日誌的記錄格式,不過要注意,log_format指令設定的名稱在配置檔案中是不能重複的。

upstream fasf.com 之間

以上**可以插入到 http 整個伺服器的配置裡,也可以插入到虛擬主機的 server 或者下面的location模組內

client_body_buffer_size 15m;

請求緩衝區在nginx請求處理中起著重要作用。 在接收到請求時,nginx將其寫入這些緩衝區,此指令設定用於請求主體的緩衝區大小。 如果主體超過緩衝區大小,則完整主體或其一部分將寫入臨時檔案。 如果nginx配置為使用檔案而不是記憶體緩衝區,則該指令會被忽略。 預設情況下,該指令為32位系統設定乙個8k緩衝區,為64位系統設定乙個16k緩衝區

client_body_temp_path clientpath 3 2;

關於client_body_temp目錄的作用,簡單說就是如果客戶端post乙個比較大的檔案,長度超過了nginx緩衝區的大小,需要把這個檔案的部分或者全部內容暫存到client_body_temp目錄下的臨時檔案

。 後面的

level1,2

,3是什麼意思?

因為如果所有上傳的檔案都放在乙個資料夾下,不僅很容易檔名衝突,並且容易導致乙個資料夾特別大。

所以有必要建立子目錄

這裡的level1,2,3

如果有值就代表存在一級,二級,**子目錄。

目錄名是由數字進行命名的,所以這裡的具體的值就是代表目錄名的數字位數

比如

client_body_temp_path  /spool/nginx/client_temp 3 2;
可能建立的檔案路徑為
/spool/nginx/client_temp/702/45/00000123457
client_max_body_size 30m;

此指令設定nginx能處理的最大請求主體大小。 如果請求大於指定的大小,則nginx發回http 413(request entity too large)錯誤。 如果伺服器處理大檔案上傳,則該指令非常重要。

worker_processes:作業系統啟動多少個工作程序執行nginx。注意是工作程序,不是有多少個nginx工程。在nginx執行的時候,會啟動兩種程序,一種是主程序master process;一種是工作程序worker process。例如我在配置檔案中將worker_processes設定為4,啟動nginx後,使用程序檢視命令觀察名字叫做nginx的程序資訊,我會看到如下結果:1個nginx主程序,master process;還有四個工作程序,worker process。主程序負責監控埠,協調工作程序的工作狀態,分配工作任務,工作程序負責進行任務處理。一般這個引數要和作業系統的cpu核心數成倍數。可以設定為auto自動識別

worker_connections:這個屬性是指單個工作程序可以允許同時建立外部連線的數量。無論這個連線是外部主動建立的,還是內部建立的。這裡需要注意的是,乙個工作程序建立乙個連線後,程序將開啟乙個檔案副本。所以這個數量還受作業系統設定的,程序最大可開啟的檔案數有關

nginx從1.9.0開始,新增加了乙個stream模組,用來實現四層協議的**、**或者負載均衡等。這完全就是搶haproxy份額的節奏,鑑於nginx在7層負載均衡和web service上的成功,和nginx良好的框架,stream模組前景一片光明

stream模組預設沒有編譯到nginx, 編譯nginx時候 ./configure –with-stream 即可

stream模組用法和http模組差不多,關鍵的是語法幾乎一致。熟悉http模組配置語法的上手更快

以下是乙個配置了tcp負載均衡和udp(dns)負載均衡的例子, 有 server,upstream塊,而且還有server,

hash, listen, proxy_pass等指令,如果不看最外層的stream關鍵字,還以為是http模組呢,下例是四層反代郵箱協議的例子,直寫了25埠,其他埠方法相同

stream {

upstream smtp {

least_conn;    ------把請求**給連線數較少的後端,能夠達到更好的負載均衡效果

server 10.5.3.17:25 max_fails=2 fail_timeout=10s;

server {

listen        25;

proxy_pass    smtp;

proxy_timeout 3s;

proxy_connect_timeout 1s;

nginx常用模組

需要的伺服器角色 外網ip 內網ip 主機名web eth0 10.0.0.7 eth1 172.16.1.7 web01 autoindex 目錄索引 root web01 cat etc nginx conf.d mirror.oldxu.com.conf server root web01 m...

Nginx常用的模組

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

Nginx 常用模組介紹

nginx 核心模組介紹 標準的http功能模組集合 常用模組彙總 ngx http core module 包括一些核心的http引數配置,對應nginx的配置為http區塊部分 ngx http gzip module 壓縮模組,對nginx返回的資料壓縮,屬於效能優化模組 ngx http p...