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