nginx-location正則表達式匹配規則及動靜分離

nginx-location正則表達式匹配規則及動靜分離

nginx,location經常使用正則表達式,及nginx動靜分離
php

nginx匹配規則

1
2
3
4
5
6
~ 波浪線表示執行一個正則匹配,區分大小寫
~* 表示執行一個正則匹配,不區分大小寫
^~ ^~表示普通字符匹配,若是該選項匹配,只匹配該選項,不匹配別的選項,通常用來匹配目錄
= 進行普通字符精確匹配
@ "@" 定義一個命名的 location,使用在內部定向時,例如 error_page, try_files
!~(!~*) 表示區分大小寫不正則匹配和不區分大小寫不正則匹配

nginx正則表達式

1
2
3
4
5
6
7
8
9
10
11
. : 匹配除換行符之外的任意字符
? : 重複0次或1次
+ : 重複1次或更屢次
* : 重複0次或更屢次
\d :匹配數字
^ : 匹配字符串的開始
$ : 匹配字符串的介紹
{n} : 重複n次
{n,} : 重複n次或更屢次
[c] : 匹配單個字符c
[a-z] : 匹配a-z小寫字母的任意一個

注意 當正則表達式中含有 {} 是,必須將 正則表達式用 「」 引發來不然會報錯
nginx: [emerg] pcre_compile() failed: missing ) in 「/one/(\d」 in /usr/local/nginx/conf/nginx.conf:56css

例如:html

1
2
3
4
5
6
#rewrite ^/test/([\d]{3})/$ /index.php?id=$1 break; #報錯
#修改成
rewrite "^/test/([\d]{3})/$" /index.php?id=$1 break;

#本條能夠不用引號
rewrite ^/(\d+)/$ /index.php?id=$1 break;

 

動靜分離清單

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 第一個必選規則
location = / {
proxy_pass http://127.0.0.1:9000/index
}
# 第二個必選規則是處理靜態文件請求,這是nginx做爲http服務器的強項
# 有兩種配置模式,目錄匹配或後綴匹配,任選其一或搭配使用
location ^~ /static/ {
root /web/static/;
}
location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
root /web/res/;
}
#第三個規則就是通用規則,用來轉發動態請求到後端應用服務器
#非靜態文件請求就默認是動態請求,本身根據實際把握
#畢竟目前的一些框架的流行,帶.php,.jsp後綴的狀況不多了
location / {
proxy_pass http://127.0.0.1:9000/
}
 
相關文章
相關標籤/搜索