**ngx_http_rewrite_module子產品配置**
将請求的uri基于正規表達式進行重寫;
例:
http-->https
domain1.tld-->domain2.tld
uri1-->uri2
指令:
rewrite regex replacement [flag];
regex:正規表達式,用于比對使用者請求的uri;
replacement:重寫之後的結果;
[flag]:
last:重寫完成之後停止對目前的uri進一步處理,改為對新uri的新一輪處理;
break:重寫完成之後停止對目前uri的處理,轉為其後面的其他配置;
redirect:重寫完成之後會傳回用戶端一個臨時的重定向,由用戶端對新的url重新發起請求(302);
permanent:重寫完成之後會傳回用戶端一個永久的重定向,由用戶端對新的url重新發起請求(301);
PCRE正規表達式元字元:
字元比對:.,[],[^]
次數比對:*,+,?,{m},{m,},{m,n}
位置錨定:^,$
或:|
分組:(),後向引用:$1,$2...
if(condition){...}條件判斷,引用新的配置上下文;
condition:比較表達式
==,!=:等于,不等于;
~:模式比對,區分字元大小寫;
~*:模式比對,不區分字元大小寫;
!~:模式不比對,區分字元大小寫;
!~*:模式不比對,不區分字元大小寫;
檔案及目錄判斷:
-f,!-f:是否存在且為普通檔案;
-d,!-d:是否存在且為目錄檔案;
-e,!-e:是否存在;
-x,!-x:是否存在且可執行;
nginx中常用的參數:
$args :請求中的參數;
$content_length:HTTP請求資訊裡的“Content_Length”
$content_type:HTTP請求資訊裡的“Content_Type”
$document_root:目前請求的根路徑
$document_uri:與$uri相同
$host:請求資訊中的“Host”,如果請求中沒有Host值,則等于設定的伺服器名
$http_user_agent:請求的用戶端類型
$http_cookie:請求資訊中的cookie
$limit_rate:限制的速率
$request_body_file:用戶端請求主體資訊的臨時檔案名
$request_method:用戶端請求方法
$remote_addr:用戶端的IP位址
$remote_port:用戶端的端口
$remote_user:用戶端的使用者名
$request_filename:請求的檔案
$request_uri:用戶端請求的uri包含參數
$query_string:與$arg相同
$scheme:請求的HTTP方法,如:http,https
$server_protocol:請求使用的協定,通常是HTTP/1.0或HTTP/1.1
$server_addr:伺服器位址
$server_name:伺服器名稱
$server_port:請求到達伺服器的端口
$uri:請求中的uri不包含參數