Nginx Rewrite使用場(chǎng)景及代碼案例詳解
Nginx Rewrite使用場(chǎng)景
1.URL地址跳轉(zhuǎn),例如用戶訪問pm.com將其跳轉(zhuǎn)到baidu.com或者當(dāng)用戶通過http的方式訪問時(shí),將其跳轉(zhuǎn)至https的方式訪問。
2.URL偽靜態(tài),將動(dòng)態(tài)頁面顯示為靜態(tài)頁面方式的一種技術(shù),減少動(dòng)態(tài)URL地址對(duì)外暴露過多的參數(shù),提升更高的安全性。
3.搜索引擎SEO優(yōu)化依賴于URL路徑,以便支持搜索引擎錄入
4.可以調(diào)整用戶瀏覽的URL,看起來更規(guī)范,合乎開發(fā)及產(chǎn)品人員的需求。
配置語法
rewrite regex replacement [flag];
4種flag
last 停止處理后續(xù)rewrite指令集,跳出location作用域,并開始搜索與更改后的URI相匹配的location,URL地址不變
break 停止處理后續(xù)rewrite指令集,不會(huì)跳出location作用域,不再進(jìn)行重新查找,終止匹配,URL地址不變
redirect 返回302臨時(shí)重定向,瀏覽器地址欄會(huì)顯示跳轉(zhuǎn)后的URL地址,爬蟲不會(huì)更新自己的URL數(shù)據(jù)庫
permanent 返回301永久重定向,瀏覽器地址欄會(huì)顯示跳轉(zhuǎn)后的URL地址,爬蟲會(huì)更新自己的URL數(shù)據(jù)庫
注:使用last和break時(shí)瀏覽器中的地址不會(huì)改變,使用redirect和permanent則會(huì)改變
舉例說明:
location /abc/ {
rewrite ^/abc/(.*) /whsir/$1 break;
return 401;
}
location /opq/ {
rewrite ^/opq/(.*) /whsir/$1 last;
return 402;
}
location /whsir/ {
return 403;
}
輸入abc后,如果能匹配到whsir的內(nèi)容,則返回200,否則返回404
輸入opq后,如果能匹配到whsir的內(nèi)容,則返回403,否則返回404
last和break只返回一個(gè)狀態(tài)碼即成功或失敗,redirect和permanent會(huì)先返回302或301,在返回成功或失敗
常用的Nginx全局變量:
例:http://www.pm.com:99/aa/bb/test.php
$host www.pm.com
$server_port 99
$request_uri /aa/bb/test.php
$document_root /pm_code
$request_filename /pm_code/aa/bb/test.php
案例1:外部跳轉(zhuǎn)
打開lb01虛擬機(jī),先將之前的自定義配置文件關(guān)閉,新建/etc/nginx/conf.d/rewrite.conf

注:^/意思為以根(這里根目錄為/pm_code,對(duì)應(yīng)域名為www.pm.com)開頭的url都會(huì)重定向到百度。
修改/etc/nginx/nginx.conf文件
將錯(cuò)誤日志級(jí)別修改為notice使其能記錄到重定向信息(debug, info, notice, warn, error, crit越靠前記錄的信息越多)

在http模塊中添加一行
rewrite_log on;(打開rewrite日志記錄)
測(cè)試
在瀏覽器地址欄中輸入www.pm.com(在hosts中已配置好),會(huì)重定向到百度首頁

案例2:內(nèi)部跳轉(zhuǎn)
更改/etc/nginx/conf.d/rewrite.conf內(nèi)容

在/pm_code中創(chuàng)建文件2.html(內(nèi)容222),在瀏覽器中輸入www.pm.com/1.html

在錯(cuò)誤日志中查看記錄

使用return
在上述方法中,瀏覽器地址欄中顯示的是1.html,而網(wǎng)頁內(nèi)容是2.html的內(nèi)容,如果想要地址欄中也顯示2.html,將location中的內(nèi)容更改為 return 302 /2.html; 或者 rewrite .* /2.html redirect;
使用正則
例:將www.pm.com/2020/* 重定向到 www.pm.com/2019/*

括號(hào)代表一個(gè)整體,$1代表前面第一個(gè)括號(hào)內(nèi)的內(nèi)容
將http跳轉(zhuǎn)到https

注:nginx 1.14版本后可以不用寫ssl on了,listen那里寫成listen 443 ssl;
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
linux安裝nginx和前端部署vue項(xiàng)目全過程(實(shí)測(cè)react項(xiàng)目也可)
這篇文章主要介紹了如何將前端項(xiàng)目打包并部署到服務(wù)器上,包括使用nginx進(jìn)行配置和啟動(dòng)等步驟,文中通過代碼以及圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-11-11
Nginx七層負(fù)載均衡之動(dòng)靜分離思路詳解
Nginx動(dòng)靜分離簡(jiǎn)單來說就是把動(dòng)態(tài)跟靜態(tài)請(qǐng)求分開,不能理解成只是單純的把動(dòng)態(tài)頁面和靜態(tài)頁面屋里分離,這篇文章主要介紹了Nginx七層負(fù)載均衡之動(dòng)靜分離思路詳解,需要的朋友可以參考下2024-02-02
Nginx配置系統(tǒng)服務(wù)&設(shè)置環(huán)境變量方式
本文介紹了如何將Nginx配置為系統(tǒng)服務(wù)并設(shè)置環(huán)境變量,以便更方便地對(duì)Nginx進(jìn)行操作,通過配置系統(tǒng)服務(wù),可以使用系統(tǒng)命令來啟動(dòng)、停止或重新加載Nginx,并通過設(shè)置環(huán)境變量可以簡(jiǎn)化執(zhí)行其他命令的操作步驟2025-03-03
Nginx轉(zhuǎn)發(fā)丟失cookie表現(xiàn)形式及解決方案
本文主要介紹了Nginx轉(zhuǎn)發(fā)丟失cookie表現(xiàn)形式及解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
nginx lua集成kafka的實(shí)現(xiàn)方法
這篇文章主要介紹了nginx lua集成kafka的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
nginx中調(diào)度算法的五種實(shí)現(xiàn)
本文主要介紹了nginx中調(diào)度算法的五種實(shí)現(xiàn),包括輪詢、權(quán)重輪詢、IP哈希、fair和URL哈希,具有一定的參考價(jià)值,感興趣的可以了解一下2025-03-03

