Nginx 重定向方法
Nginx 重定向配置是一個功能強大且靈活的工具,可以根據具體需求實現各種重定向規則。以下是對 Nginx 請求重定向配置方法的詳細解析:
1. 基本概念
- 請求重定向是指當客戶端向服務器發送一個請求時,服務器根據一定的規則將客戶端的請求引導到另外一個 URL 的過程。在 Nginx 中,通過
rewrite
和return
指令等可以實現請求重定向。這在網站重構、域名變更、URL 美化等場景中非常有用。
2. 使用return
指令進行重定向
-
當客戶端訪問
http://example.com/old - path
時,服務器會返回 301 狀態碼,並在Location
頭信息中包含http://example.com/new - path
,瀏覽器收到這個響應後,會自動跳轉到新的 URL。 -
假設要將訪問
http://example.com/old - path
的請求永久重定向到http://example.com/new - path
,可以在 Nginx 配置文件的server
塊中添加如下配置: -
語法
return code [text];
或者return code URL;
。其中code
是 HTTP 狀態碼,常見的有 301(永久重定向)、302(臨時重定向)等。text
是可選的響應體內容(如果不重定向到 URL 的話),URL
是要重定向到的目標 URL。 -
示例
-
server{ listen 80; server_nameexample.com; location/old-path{ return301http://example.com/new-path; } }
-
3. 使用rewrite
指令進行重定向
-
這裏的正則表達式
^/blog - old/(.*)$
用於匹配以/blog - old/
開頭的 URL,(.*)
表示匹配/blog - old/
之後的任意內容,並將其捕獲爲一個組。/blog - new/$1
是替換後的內容,$1
表示使用前面捕獲的組內容。permanent
標記表示這是一個永久重定向。 -
假設要將以
/blog - old/
開頭的 URL 重寫爲以/blog - new/
開頭的 URL,並進行永久重定向。配置如下: -
語法
:
rewrite regex replacement [flag];
。regex
是一個正則表達式,用於匹配請求的 URL。replacement
是匹配成功後要替換成的新 URL。flag
是可選的標記,用於控制重寫的行爲,常見的標記有last
(停止當前的location
塊處理,重新開始匹配新的location
塊)、break
(停止rewrite
操作,直接使用當前重寫後的 URL)、redirect
(返回 302 臨時重定向)、permanent
(返回 301 永久重定向)。 -
示例
-
server{ listen 80; server_nameexample.com; location/{ rewrite^/blog-old/(.*)$ /blog-new/$1permanent; } }
-
4. 重定向到外部域名
-
使用
rewrite
指令 -
如果要將請求重定向到外部域名,例如將
http://example.com/products
重定向到https://other - domain.com/products
,可以使用return
或rewrite
指令。 -
使用
return
指令-
server{ listen 80; server_nameexample.com; location/products{ return301https://other-domain.com/products; } }
server{ listen 80; server_nameexample.com; location/products{ rewrite^/products(.*)$https://other-domain.com/products$1permanent; } }
-
4. 注意事項
-
正則表達式匹配順序
當有多個
rewrite
規則時,Nginx 會按照配置文件中的順序進行匹配。所以要注意規則的順序,避免出現意外的匹配結果。 -
性能影響
過度複雜的
rewrite
規則可能會影響 Nginx 的性能。在實際應用中,儘量保持規則簡單明瞭,避免使用非常複雜的正則表達式。 -
測試重定向
在將重定向規則應用到生產環境之前,最好在測試環境中進行充分的測試,確保重定向的行爲符合預期。可以使用工具如
curl
來模擬請求,檢查返回的狀態碼和重定向的目標 URL 是否正確。例如,使用curl -I http://example.com/old - path
可以查看請求http://example.com/old - path
時返回的頭信息,包括重定向狀態碼和目標 URL。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/Yu2cGmUl1So0daC7RO6V4w