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


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

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

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:56

例如:

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/
}
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM