1:nginx location 規則匹配
^
~ 識別符號匹配後面跟乙個字串。匹配字串後將停止對後續的正規表示式進行匹配。
如:location ^
~/images/
, 在匹配了/images、這個字串後就停止對後續的匹配
= 精準匹配,如:location=
/,只會匹配urrl為/的請求
~ 區分大小寫的匹配
~* 不區分大小寫的匹配
!~ 對區分大小寫的匹配取非!~
* 對區分大小寫的匹配取非
/ 通用匹配,如果沒有其他匹配,任何匹配請求都會被匹配到
2:正規表示式
* 重複前面的字元0次或多次
? 重複前面的字元0次或1次
+ 重複前面的字元1次或多次
. 匹配除換行符以外的任意乙個字元
(a | b) 匹配a或b
^ 以...
..開頭
$ 以...
..結尾
重複前面的字元n次
重複前面的字元n次或更多次
重複前面的字元n次到m次
*? 重複前面的字元0次或多次 ,但盡可能的少重複
+? 重複前面的字元1次或更多次 ,但盡可能的少重複
?? 重複前面的字元0次或1次 ,但盡可能的少重複
? 重複前面的字元n次或m次 ,但盡可能的少重複
? 重複前面的字元n次以上 ,但盡可能的少重複
3:正則補充
\w 匹配任意不是字母,數字,下劃線,漢子的字元
\s 匹配任意不是空白字串的字元
\d 匹配任意非數字的字元
\b 匹配不是單詞開頭或結束的位置
[a] 匹配a-z小寫字母的任意乙個
[^a] 匹配除a以外的任意字元
4:過期快取
expires 30d
;
5:設定某些型別檔案的瀏覽器快取時間
6:針對瀏覽器
location /
}
7:判斷檔案,資料夾
-f和!
-f用來判斷是否存在檔案
-d和!
-d用來判斷是否存在目錄
-e和!
-e用來判斷是否存在檔案或目錄
-x和!
-x用來判斷檔案是否可執行
8:全域性變數
$args 請求中的引數,如www.abc.com/test/hello?a=
1&b=
2的$args就是a=
1&b=
2$document_root nginx虛擬主機配置檔案中的root引數對應的值
$document_uri 當前請求中不包含指令的uri,如www.abc.com/test/hello?a=
1&b=
2的document_uri就是/test/hello,不包含後面的引數
$host 主機頭,也就是網域名稱
$http_user_agent 客戶端的詳細資訊,也就是瀏覽器的標識,用curl -a可以指定
$http_cookie cookie資訊
$limit_rate 如果nginx伺服器使用limit_rate配置了顯示網路速率,則會顯示,如果沒有設定,則顯示0
$remote_addr 客戶端的公網ip
$remote_port 客戶端的埠
$request_method 請求資源的方式,get/put/delete等
$request_filename 當前請求的資源檔案的路徑名稱,相當於是$document_root/$document_uri的組合
$request_uri 請求的鏈結,包括$document_uri和$args
$scheme 請求的協議,如ftp、http、https
$server_protocol 客戶端請求資源使用的協議的版本,如http/
2.0等
$server_addr 伺服器ip位址
$server_name 伺服器的主機名
$server_port 伺服器的埠號
$uri 和$document_uri相同
$http_referer 客戶端請求時的referer,通俗講就是該請求是通過哪個鏈結跳過來的
常用:$http_referer
$request_uri
$http_user_agent
9:案例
Nginx 正則匹配
目錄 區分大小寫 大小寫敏感 匹配成功 不區分大小寫匹配成功 區分大小寫匹配失敗 不區分大小寫匹配失敗 以什麼開頭的匹配 以什麼結尾的匹配 代表任意字元 expires 30d 表示過期時間30天 location 禁止訪問chrome瀏覽器。f和 f用來判斷是否存在檔案 d和 d用來判斷是否存在目...
正則全域性匹配 g
每次匹配使用當前正則物件的lastindex屬性的值作為在目標字串中開始查詢的起始位置。lastindex屬性的初始值為0,找到匹配的項後lastindex的值被重置為匹配內容的下乙個字元在字串中的位置索引,用來標識下次執行匹配時開始查詢的位置,如果找不到匹配的項lastindex的值會被設定為0。...
定義全域性常量
這樣定義 private final static int over all 如果只有final,這個值雖然不能改,但是如果over all所在的類有很多個物件,那麼over all這個物件將存放很多次,會很浪費空間。所以需要加加上static,這樣的話就算有很多物件那也會只有乙個over all。...