1. 程式人生 > >nginx URL_重寫if規則和nginx變數

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含義相同