Nginx提供的全局變量或本身設置的變量,結合正則表達式和標誌位實現url重寫以及重定向。rewrite只能放在server{},location{},if{}中,而且只能對域名後邊的除去傳遞的參數外的字符串起做用。Rewrite主要的功能就是實現URL的重寫,Nginx的Rewrite規則採用Pcre,perl兼容正則表達式的語法規則匹配,若是須要Nginx的Rewrite功能,在編譯Nginx以前,須要編譯安裝PCRE庫。經過Rewrite規則,能夠實現規範的URL、根據變量來作URL轉向及選擇配置。php
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相同。 |
## 若是訪問的ip地址爲192.168.5.165,則返回403 if ($remote_addr = 192.168.5.166) { return 403; }
## 不容許谷歌瀏覽器訪問 若是是谷歌瀏覽器返回500 if ($http_user_agent ~ Chrome) { return 500; }