nginx URL_重寫if規則和nginx變數
URL重寫 ----- rewrite
if指令
if (condition) {......} 代表條件為真時的nginx操作
condition條件的寫法:
1) 變數名
如果變數的值為空,或者為以"0"開頭的任意字串,條件為假,其他則為真 if ($slow) {....} 2) 使用"="或者"!="比較變數的值
if ($request_method = POST) {.....} 3) 使用正則表示式與變數的值進行匹配
變數名與正則表示式間使用~, ~*, !~, !~*進行連線 在正則表示式中使用()可以對字元進行分組,在{}中可以用$1....$9引用分組 正則表示式寫時不需要加雙引號,但是如果正則表示式中含有}和;字元,則必須要使用雙引號 if ($http_user_agent ~ MSIE) {.....}
4) 判斷請求的檔案是否存在(-f,!-f)
5) 判斷請求的目錄是否存在 (-d, !-d)
6) 判斷請求的目錄或檔案是否存在 (-e, !-e)
7) 判斷請求的檔案是否可執行 (-x, !-x)
Nginx變數
1) $args
存放URL中的請求指令 https://reg.jd.com/reg/person?ReturnUrl=https%3A//sale.jd.com/act/r1z8LpvTcxkDbge.html ReturnUrl=https%3A//sale.jd.com/act/r1z8LpvTcxkDbge.html
2) $content_length
存放請求報文中content_length欄位內容 3) $content_type
存放請求報文中content_type欄位內容 4) $document_root
存放針對當前請求的根路徑 5) $document_uri
存放請求報文中的當前URI,並且不包括請求指令 https://reg.jd.com/reg/person?ReturnUrl=https%3A//sale.jd.com/act/r1z8LpvTcxkDbge.html /reg/person 6) $host
存放請求報文中的主機部分 https://reg.jd.com/reg/person?ReturnUrl=https%3A//sale.jd.com/act/r1z8LpvTcxkDbge.html reg.jd.com 7) $http_user_agent
存放客戶端代理資訊(瀏覽器)
8) $http_cookie
存放客戶端的cookie資訊 9) $limit_rate
存放nginx伺服器對網路連線速率的限制,也就是ngnix配置檔案中limit_rate指令的值 10) $remote_addr
存放客戶端地址 11) $remote_port 存放客戶端埠
12) $remote_user 存放客戶端的使用者名稱
13) $request_body_file
存放發給後端伺服器的本地檔案資源名稱 14) $request_method
存放客戶端請求資源的方法, GET, POST, PUT, DELETE, HEAD 15) $request_filename
存放當前請求的資原始檔的路徑名 16) $request_uri
存放當前請求的URI,並且帶有請求指令 https://reg.jd.com/reg/person?ReturnUrl=https%3A//sale.jd.com/act/r1z8LpvTcxkDbge.html /reg/person?ReturnUrl=https%3A//sale.jd.com/act/r1z8LpvTcxkDbge.html
17) $query_string
與變數$args含義相同 18) $scheme
存放客戶端請求使用的協議,如果http, https 19) $server_protocol
存放客戶端請求協議的版本 HTTP/1.0 HTTP/1.1 20) $server_addr
存放伺服器地址 21) $server_name
存放了客戶端請求到達的伺服器的名稱 22) $server_port
存放了客戶端請求到達的伺服器的埠號 23) $uri
與變數$document_uri含義相同