nginx 重寫 rewrite 基礎及例項

2021-06-19 08:26:23 字數 3125 閱讀 8387

nginx rewrite 正規表示式匹配

大小寫匹配

~ 為區分大小寫匹配 

~* 為不區分大小寫匹配 

!~和!~*分別為區分大小寫不匹配及不區分大小寫不匹配 

檔案及目錄匹配

-f和!-f用來判斷是否存在檔案 

-d和!-d用來判斷是否存在目錄 

-e和!-e用來判斷是否存在檔案或目錄 

-x和!-x用來判斷檔案是否可執行 

flag標記

last 相當於apache裡的[l]標記,表示完成rewrite

break 終止匹配, 不再匹配後面的規則。

redirect 返回302臨時重定向 位址列會顯示跳轉後的位址。

permanent 返回301永久重定向 位址列會顯示跳轉後的位址。

logcation的幾個使用例項:

1)location  / :匹配任何查詢,因為所有請求都以 / 開頭。但是正規表示式規則將被優先和查詢匹配。

2)location =/ {}:僅僅匹配/

}:location不區分大小寫,匹配任何以gif,jpg,jpeg結尾的檔案。

幾個例項:

多目錄轉成引數

要求:abc.domian.com/sort/2 => abc.domian.com/index.php?act=sort&name=abc&id=2 

規則配置:

if ($host ~* (.*)\.domain\.com)

}//上段**就將js|css|jpg|jpeg|gif|png|swf這類檔案的保質期設定為一小時。

防盜煉的設定:

說明:這裡的return 417 為自定義的http狀態碼,預設為403,方便通過nginx的log檔案找出正確的盜鏈的請求位址 

「rewrite ^/ 」顯示一張防盜煉

「access_log off;」不記錄訪問日誌,減輕壓力 

「expires 3d」所有檔案3天的瀏覽器快取 

只充許固定ip訪問**,並加上密碼;這個對有許可權認證的應用比較在行

location \ { 

allow 22.27.164.25; #允許的ipd

deny all; 

auth_basic 「key」; #認證的一些設定

auth_basic_user_file htpasswd; 

說明:location的應用也有各種變化,這裡的寫法就針對了根目錄了。

檔案和目錄不存在的時重定向

if (!-e $request_filename) { 

#proxy_pass #這裡是跳轉到**ip,這個**ip上有乙個監聽的web伺服器

rewrite ^/  #跳轉到這個網頁去

#return 404; #直接返回404碼,然後會尋找root指定的404.html檔案

網域名稱跳轉

server { 

listen 80; 

server_name jump.jjonline.cn ;#需要跳轉的多級網域名稱

index index.html index.htm index.php; #入口索引檔案的名字

root /var/www/public_html/; #這個站點的根目錄

rewrite ^/  

access_log off; 

多網域名稱轉向

server { 

listen 80; 

server_name www.jjonline.cn www.jjonline.org;

index index.html index.htm index.php; 

root /var/www/public_html/; 

if ($host ~ 「jjonline\.org」) { 

rewrite ^(.*) permanent; 

**網域名稱跳轉

網域名稱鏡向

server { 

listen 80; 

server_name mirror.jjonline.cn; 

index index.html index.htm index.php; 

root /var/www/public_html; 

rewrite ^/(.*) last; 

access_log off; 

某個子目錄作鏡向,這裡的示例是demo子目錄

location ^~ /demo { 

rewrite ^.+ last; 

break; 

以下在附帶本部落格的rewrite寫法,emlog系統的rewrite

location ~ {

if (!-e $request_filename) {

rewrite ^/(.+)$ /index.php last;

nginx URL重寫rewrite規則

語法 rewrite regex replacement flag 如 此處的 1用於引用 jpg 匹配到的內容,又如 rewrite bbs redirect 如上例所示,replacement可以是某個路徑,也可以是某個url 常見的flag flag 作用last 基本上都用這個flag,表示...

apache 重寫除錯 rewrite 錯誤

很尷尬,老是很小的地方引發很大的問題,莫非這就是傳說中的技術?遇到這個問題,檢查了半天,可是最後的改動竟然只是刪除乙個 關於apache 重寫url的除錯方法可以用rewritelog檢視除錯資訊。serveradmin postmaster dummy host.localhost documen...

phpwind的rewrite重寫原理

沒有深入過pw,被人問到這方面的問題,搜尋了一下,發現了一篇博文,但原部落格已打不開。phpwind 8.7 有人說過 phpwind 在技術是成功的,而dz在商業上成功的,在rewrite的控制中,pw做得遠遠比dz好。關於pw的重寫,首先他用到了一般人不會太關注的乙個技術點,輸出緩衝 outpu...