nginx 路由匹配規則

2021-10-01 12:06:01 字數 1602 閱讀 3431

語法規則: location [=|~|~*|^~] /uri/

首先匹配=(精確匹配),其次匹配^~(非正則),其次是按檔案中順序的正則匹配,最後是交給 / 通用匹配。當有匹配成功時候,停止匹配,按當前匹配規則處理請求。

注意:= 精準匹配命中時,停止location 動作,直接走 精準匹配;

一般匹配(含非正則)命中時,先收集所有的普通匹配,最後對比出最長的那一條

如果最長的那一條普通匹配宣告為非正則,直接此條匹配,停止location

如果最長的那一條普通匹配不是非正則,繼續往下走 正則 location

按**順序執行正則匹配,當第一條正則location 命中時,停止 location

將url 拆解為 網域名稱/埠/path/params

先將網域名稱/埠,對應到目標虛擬主機 server

path 部分參與 location匹配,path=path1 匹配部分 + path2 剩餘部分

進入location 方法體內部流程

若是靜態檔案處理,則進入 目標目錄查詢檔案: root 指令找 path1 + path2 對應的檔案;alias 指令時找 path2 對應的檔案

若是 proxy **,則**位址 形如: proxy_pass=ip:port 時,**路徑 path1+ path2到目標服務。**位址形如:proxy_pass=ip:port/*** 時,**路徑 path2 到目標服務。params 始終跟隨**。

規則:rewrite regex replacement [flag];

flat: break/last/redirect/permanent

regex 正規表示式

replacement 替換值,新值

flag 後續處理標識

post-read:  接收到完整的http頭部後處理的階段,在uri 重寫之前。一般跳過

server-rewrite:  location 匹配前,修改uri 的階段,用於重定向,location塊外的重寫指令(多次執行)

find-config: 尋找匹配的 location 塊配置項(多次執行)

rewrite: 找到location 塊後再修改uri,location 級別的uri 重寫階段(多次執行)

post-rewrite: 防死迴圈,跳轉到 對應階段

preaccess: 許可權預處理

access: 判斷是否允許 這個請求進入

post-access: 向使用者傳送拒絕服務的錯誤碼,用來響應上一階段的拒絕

try-files: 訪問靜態檔案資源

content: 內容生成階段,該階段產生響應,併發送到客戶端

log: 記錄訪問日誌

語法格式:

upstream 負載名

1、輪詢:

upstream order

2、weigth: (根據權重)

upstream order

輪詢機率,weight 和 訪問比例成正比,用於後段伺服器效能不均的情況;

down 暫時不參與負載。

3、ip_hash

upstream order

根據ip 雜湊值,保證 session一致,保證每個客戶端的請求訪問的都是同乙個後段伺服器

nginx匹配規則

nginx的location可以有以下幾個匹配 1.嚴格匹配這個查詢。如果找到,停止搜尋。2.匹配路徑的字首,如果找到,停止搜尋。3.為區分大小寫的正則匹配 4.為不區分大小寫匹配 波浪線表示執行乙個正則匹配,區分大小寫 表示執行乙個正則匹配,不區分大小寫 表示普通字元匹配,如果該選項匹配,只匹配該...

nginx匹配規則

模式 含義location uri 表示精確匹配,只有完全匹配上才能生效 location uri 開頭對url路徑進行字首匹配,並且在正則之前。location pattern 開頭表示區分大小寫的正則匹配 location pattern 開頭表示不區分大小寫的正則匹配 location uri...

Nginx路由匹配規則及各種場景例項

location uri 中括號中為路由匹配符號,常見的有 1 精確匹配2 精確字首匹配 3 區分大小寫的正則匹配4 不區分大小寫的正則匹配 5 uri 普通字首匹配 6 通用匹配精確匹配 精確匹配使用 表示,nginx進行路由匹配的時候,精確匹配具有最高的優先順序,請求一旦精確匹配成功nginx會...