nginx(二)

nginx rewrite

​ Nginx提供的全局變量或本身設置的變量,結合正則表達式和標誌位實現url重寫以及重定向。rewrite只能放在server{},location{},if{}中,而且只能對域名後邊的除去傳遞的參數外的字符串起做用。Rewrite主要的功能就是實現URL的重寫,Nginx的Rewrite規則採用Pcre,perl兼容正則表達式的語法規則匹配,若是須要Nginx的Rewrite功能,在編譯Nginx以前,須要編譯安裝PCRE庫。經過Rewrite規則,能夠實現規範的URL、根據變量來作URL轉向及選擇配置。php

Rewrite全局變量

​ nginx的rewrite規則就是使用正則匹配請求的url,而後根據定義的規則進行重寫和改變,需ngx_http_rewrite_module模塊來支持url重寫功能,該模塊是標準模塊,默認已經安裝。html

變量 含義
\(args | 這個變量等於請求行中的參數,同\)query_string
$content length 請求頭中的Content-length字段。
$content_type 請求頭中的Content-Type字段。
$document_root 當前請求在root指令中指定的值。
$host 請求主機頭字段,不然爲服務器名稱。
$http_user_agent 客戶端agent信息
$http_cookie 客戶端cookie信息
$limit_rate 這個變量能夠限制鏈接速率。
$request_method 客戶端請求的動做,一般爲GET或POST。
$remote_addr 客戶端的IP地址。
$remote_port 客戶端的端口。
$remote_user 已經通過Auth Basic Module驗證的用戶名。
$request_filename 當前請求的文件路徑,由root或alias指令與URI請求生成。
$scheme HTTP方法(如http,https)。
$server_protocol 請求使用的協議,一般是HTTP/1.0或HTTP/1.1。
$server_addr 服務器地址,在完成一次系統調用後能夠肯定這個值。
$server_name 服務器名稱。
$server_port 請求到達服務器的端口號。
$request_uri 包含請求參數的原始URI,不包含主機名,如」/foo/bar.php?arg=baz」。
\(uri | 不帶請求參數的當前URI,\)uri不包含主機名,如」/foo/bar.html」。
\(document_uri | 與\)uri相同。

實例demo

判斷IP地址來源

## 若是訪問的ip地址爲192.168.5.165,則返回403
     if  ($remote_addr = 192.168.5.166) {  
         return 403;  
     }

限制瀏覽器訪問

## 不容許谷歌瀏覽器訪問 若是是谷歌瀏覽器返回500
 if ($http_user_agent ~ Chrome) {   
         return 500;  
}
相關文章
相關標籤/搜索