location 有“定位”的意思,可以根據URI來進行不同的的定位在虛擬主機的配置中,是必不可少的,location,他可以把網站的不同部分,定位到不同的處理方式上
location 的語法
location [=|~|~*|^~] patt {
}
location 語句大致可以分為三種location = demo {} 【精准匹配】
location [b]demo {} 【普通匹配】[/b]
location ~ [b]demo {} 【正則匹配】[/b]在這三種匹配中精准優先匹配,如果精准匹配成功,則停止匹配過程
location = / { # 精確匹配 / ,主機名後面不能帶任何字符串 config A } location / { # 因為所有的地址都以 / 開頭,所以這條規則將匹配到所有請求 # 但是正則和最長字符串會優先匹配 config B } location ~ image { # 匹配任何以 /iamge/ 開頭的地址,匹配符合以後,還要繼續往下搜索 # 只有後面的正則表達式沒有匹配到時,這一條才會采用這一條 config C } location /foo { # 字符匹配到 /foo,繼續往下 config D }
=開頭表示精確匹配
如 A 中只匹配根目錄結尾的請求,後面不能帶任何字符串。
~ 開頭表示區分大小寫的正則匹配;
~* 開頭表示不區分大小寫的正則匹配
/ 通用匹配, 如果沒有其它匹配,任何請求都會匹配到
/ -> config A
精確完全匹配
/image/logo.png -> config C
匹配B以後,往下沒有任何匹配,采用C
/foo -> config D
匹配到F,往下匹配到D,停止往下
/abc/def -> config B
匹配規則B
rewrite 重寫
重寫中用到的指令
if (條件) {} 設定條件,再進行重寫
set #設置變量
return #返回狀態碼
break #跳出rewrite
rewrite #重寫
If 語法格式
If 空格 (條件) {
重寫模式
}
條件又怎麼寫?
答:3種寫法
1: “=”來判斷相等, 用於字符串比較
2: “~” 用正則來匹配(此處的正則區分大小寫)
~* 不區分大小寫的正則
3: -f -d -e來判斷是否為文件,為目錄,是否存在.