天天看點

nginx(五)rewrite

**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不包含參數