- nginx配置
# ^測試
location ~ ^/imgs {
return 200 "匹配/imgs開頭的正則表達式";
}
- 測試
### ngxinx響應(yīng):匹配/imgs開頭的正則表達式
GET http://localhost:85/imgs/123
- nginx配置
# $測試
location ~ \.js$ {
return 200 "匹配js文件";
}
- 測試
### ngxinx響應(yīng):匹配js文件
GET http://localhost:85/http.js
- nginx配置
# [abc]測試
location ~ [a-zA-Z].html$ {
return 200 "匹配英文字母的html";
}
- 測試
### ngxinx響應(yīng):匹配英文字母的html
GET http://localhost:85/demo.html
### ngxinx響應(yīng):404 Not Found。因為demo1中含有數(shù)據(jù)不合規(guī)則
GET http://localhost:85/demo1.html
- nginx配置
location ~ ^/users?$ {
return 200 "匹配user結(jié)尾 或 users結(jié)尾";
}
- 測試
### ngxinx響應(yīng):匹配user結(jié)尾 或 users結(jié)尾
GET http://localhost:85/user
### ngxinx響應(yīng):匹配user結(jié)尾 或 users結(jié)尾
GET http://localhost:85/users
### ngxinx響應(yīng):匹配user結(jié)尾 或 users結(jié)尾。因為nginx的locaton匹配的是URI(統(tǒng)一資源標識符),不是URL(統(tǒng)一資源定位符),URL比URI范圍更廣,URL還包含查詢參數(shù)如?id=123、片段標識符如#section1
GET http://localhost:85/user?name=abc
### ngxinx響應(yīng):404 Not Found。不符合匹配規(guī)則。
GET http://localhost:85/usernames
- nginx配置
# +測試、\w測試,匹配多個路徑參數(shù),/\w+表示路徑參數(shù),(/\w+)+表示1個以個路徑參數(shù),((/\w+)+)+將多個路徑參數(shù)分組
location ~ ^/api((/\w+)+)+$ {
return 200 $1;
}
- 測試
### ngxinx響應(yīng):404 Not Found。沒有路徑參數(shù)匹配不到
GET http://localhost:85/api
### ngxinx響應(yīng):/user。匹配1個路徑/user
GET http://localhost:85/api/user
### ngxinx響應(yīng):/user/books
GET http://localhost:85/api/user/books
### ngxinx響應(yīng):/user/book/12
GET http://localhost:85/api/user/book/12
- nginx配置
# *測試、\w測試,匹配0或多個路徑參數(shù)
location ~ ^/dev-api((/\w+)+)*$ {
return 200 $1;
}
- 測試
### ngxinx響應(yīng): Response code: 200 (OK) <Response body is empty>。匹配0個參數(shù)路徑
GET http://localhost:85/dev-api
### ngxinx響應(yīng):/user
GET http://localhost:85/dev-api/user
### ngxinx響應(yīng):/user/books
GET http://localhost:85/dev-api/user/books
### ngxinx響應(yīng):/user/book/123
GET http://localhost:85/dev-api/user/book/123
- nginx配置
# .測試 匹配換行符以外的其它字符
location ~ ^/others/(.+)+$ {
return 200 $1;
}
- 測試
### ngxinx響應(yīng):asdfas2435!@
GET http://localhost:85/others/asdfas2435!@#
### ngxinx響應(yīng):404 Not Found。因為包含%0a,%0a為urlencode后的換行符
GET http://localhost:85/others/asdfas%0a2435!@#
- nginx配置
# \W測試,匹配非數(shù)字、非字母、非下劃線
location ~ ^/W/(\W+)$ {
return 200 $1;
}
- 測試
### nginx響應(yīng):!@#$%^&*()
GET http://localhost:85/W/!%40%23%24%25%5E%26*()
### nginx響應(yīng):404 Not Found。不符合規(guī)則,含有數(shù)字和字母
GET http://localhost:85/W/!%40%23%24%25%5E%26*()123abc
- nginx配置
# \d測試,匹配數(shù)字
location ~ ^/num/(\d+)$ {
return 200 $1;
}
- 測試
### nginx響應(yīng):123
GET http://localhost:85/num/123
### nginx響應(yīng):404 Not Found。不符合規(guī)則
GET http://localhost:85/num/abc
- nginx配置
# \s測試,匹配\n和\t
location ~ ^/empty((/\s+)+)+$ {
return 200 $1;
}
- 測試
### nginx響應(yīng):/ %0a:換行符
GET http://localhost:85/empty/%0a
### nginx響應(yīng):/ / %09:制表符
GET http://localhost:85/empty/%09/%09
- 分組編號:從左至右從1開始號,每遇到一個左括號編號就加1
閱讀原文:原文鏈接
該文章在 2025/7/1 23:40:17 編輯過