nginx的http配置主要包括三個區塊,結構如下:
http}}
location區段
通過指定模式來與客戶端請求的uri相匹配,基本語法如下:location [=|~|~*|^~|@] pattern
1、沒有修飾符 表示:必須以指定模式開始,如:
server}那麼,如下是對的:
?p1/
de
2、=表示:必須與指定的模式精確匹配
server}那麼,如下是對的:
?p1如下是錯的:/de
3、~ 表示:指定的正規表示式要區分大小寫
server}那麼,如下是對的:
?p1=11&p2=22
如下是錯的:/de
4、~* 表示:指定的正規表示式不區分大小寫
server}那麼,如下是對的:
如下是錯的:
5、^~ 類似於無修飾符的行為,也是以指定模式開始,不同的是,如果模式匹配,
那麼就停止搜尋其他模式了。
6、@ :定義命名location區段,這些區段客戶段不能訪問,只可以由內部產生的請
求來訪問,如try_files或error_page等
查詢順序和優先順序
1:帶有「=「的精確匹配優先
2:沒有修飾符的精確匹配
3:正規表示式按照他們在配置檔案中定義的順序
4:帶有「^~」修飾符的,開頭匹配
5:帶有「~」 或「~*」 修飾符的,如果正規表示式與uri匹配
6:沒有修飾符的,如果指定字串與uri開頭匹配
location區段匹配示例location = /
location /
location ^~ /images/
location ~* \.(gif|jpg|jpeg)$ 各
請求的處理如下例:
root 、alias指令區別
location /img/#若按照上述配置的話,則訪問/img/目錄裡面的檔案時,ningx會自動去/var/www/image/目錄找檔案
location /img/#若按照這種配置的話,則訪問/img/目錄下的檔案時,nginx會去/var/www/image/img/目錄下找檔案。]alias是乙個目錄別名的定義,root則是最上層目錄的定義。還有乙個重要的區別是alias後面必須要用「/」結束,否則會找不到檔案的。。。而root則可有可無~~
原文:
Nginx Location 指令基礎
nginx 中的 location 指令 是nginxhttpcoremodule中重要指令。location 指令比較簡單,但卻是配置 nginx 過程中不得不去了解的。location 指令,是用來為匹配的 uri 進行配置,uri 即語法中的 uri 可以是字串或正規表示式。但如果要使用正規表...
Nginx Location 指令基礎
nginx 中的 location 指令 是nginxhttpcoremodule中重要指令。location 指令比較簡單,但卻是配置 nginx 過程中不得不去了解的。location 指令,是用來為匹配的 uri 進行配置,uri 即語法中的 uri 可以是字串或正規表示式。但如果要使用正規表...
Nginx Location 指令語法解析
本文翻譯自 www.keycdn.com support ngi nginx location是使用 nginx 的過程中必須要掌握的技能,無論是在server blocks還是其他location blocks中都會用到,這篇文章簡單介紹了當請求來臨時location指令是如何處理客戶端uri請求...