Nginx?Rewrit實(shí)現(xiàn)網(wǎng)頁(yè)跳轉(zhuǎn)功能詳細(xì)步驟
一、Nginx Rewrite
Rewrite主要的功能是實(shí)現(xiàn)URL重寫(xiě),Nginx 的 Rewrite 規(guī)則采用 PCRE Perl 兼容正則表達(dá)式的語(yǔ)法進(jìn)行規(guī)則匹配,如相使用 Nginx 的 Rewrite 功能,在編譯 Nginx 前要編譯安裝 PCRE 庫(kù)。Rewrite主要實(shí)現(xiàn)url地址重寫(xiě),以及重定向,就是把傳入web的請(qǐng)求重定向到其他url的過(guò)程。
rewrite和location的功能有點(diǎn)相像,都能實(shí)現(xiàn)跳轉(zhuǎn),主要區(qū)別在于rewrite常用于同一域名內(nèi)更改獲取資源的路徑,而location是對(duì)一類路徑做控制訪問(wèn)和反向代理,可以proxy_pass到其他服務(wù)器。
Nginx提供的全局變量或自己設(shè)置的變量,結(jié)合正則表達(dá)式和標(biāo)志位實(shí)現(xiàn)url重寫(xiě)以及重定向。
rewrite只能放在server{},location{},if{}中,
并且只能對(duì)域名后邊的除去傳遞的參數(shù)外的字符串起作用。
二、Rewrite功能
① Rewrite跳轉(zhuǎn)場(chǎng)景
② Rewrite跳轉(zhuǎn)實(shí)現(xiàn)
③ Rewrite實(shí)際場(chǎng)景
④ Rewrite正則表達(dá)式(用于匹配URL)
⑤ Rewrite命令/語(yǔ)法格式
⑥ location分類
⑦ location優(yōu)先級(jí)
⑧ Rewrite和location做比較
⑨ 根據(jù)以上來(lái)實(shí)現(xiàn)跳轉(zhuǎn)
Rewrite跳轉(zhuǎn)場(chǎng)景
① URL看起來(lái)更規(guī)范、合理
② 企業(yè)會(huì)將動(dòng)態(tài)URL地址偽裝成靜態(tài)地址提供服務(wù)
③ 網(wǎng)址換新域名后,讓舊的訪問(wèn)跳轉(zhuǎn)到新的域名上
④ 服務(wù)端某些業(yè)務(wù)跳轉(zhuǎn)
URL訪問(wèn)跳轉(zhuǎn), 支持開(kāi)發(fā)設(shè)計(jì)
① 頁(yè)面跳轉(zhuǎn) ② 兼容性支持 ③ 展示效果
SEO優(yōu)化
維護(hù)
① 后臺(tái)維護(hù) ② 流量轉(zhuǎn)發(fā)
安全
① 偽靜態(tài)頁(yè)面
Rewrite跳轉(zhuǎn)實(shí)現(xiàn) Nginx
支持URL重寫(xiě)、支持if條件判斷
但不支持else的命令執(zhí)行
跳轉(zhuǎn)
循環(huán)最多可以執(zhí)行10次
超過(guò)后nginx將返回500的錯(cuò)誤
pcre支持
rewrite使用Nginx全局變量或者自己設(shè)置的變量
結(jié)合正則表達(dá)式和標(biāo)志位實(shí)現(xiàn)URL重寫(xiě)以及重定向
重寫(xiě)模塊
set指令
以上全部都基于
ngx_http_rewrite_module模塊
Rewrite實(shí)際場(chǎng)景
① Nginx跳轉(zhuǎn)需求的實(shí)現(xiàn)方式
使用rewrite進(jìn)行匹配跳轉(zhuǎn)(防盜鏈)
使用if匹配全局變量后跳轉(zhuǎn)(Nginx自身的全局變量,不是系統(tǒng)的全局變量)
location可以匹配本地重寫(xiě)以及跨服務(wù)器跳轉(zhuǎn)
② rewrite放在server{}、if{}、location{}模塊段中
location只對(duì)域名后邊的出去傳參的字符串起作用
③對(duì)域名或者參數(shù)字符串
用if全局變量匹配
使用proxy_pass反向代理
Rewrite是在同一域名內(nèi)更改獲取資源的路徑
location本身就是一種路徑資源
Rewrite命令/語(yǔ)法格式
命令語(yǔ)法:rewrite [正則] [跳轉(zhuǎn)后的內(nèi)容] [rewrite支持的flag標(biāo)記](méi);
flag標(biāo)記說(shuō)明
last (相當(dāng)于Apache的[L]標(biāo)記,表示完成rewrite)一般用于Server和if當(dāng)中
break (本條規(guī)則匹配完成即終止,不再匹配后面的任何規(guī)則)一般用于location
redirect (返回302臨時(shí)重定向,瀏覽器地址會(huì)顯示跳轉(zhuǎn)后的URL地址,爬蟲(chóng)不會(huì)更新URL)
permanent (返回301永久重定向,瀏覽器地址欄會(huì)顯示跳轉(zhuǎn)后的URL地址,爬蟲(chóng)會(huì)更新URL)
break和last類似 但break不會(huì)重新發(fā)起一次處理過(guò)程,而是直接返回處理結(jié)果
redirect 該標(biāo)記表示當(dāng)前規(guī)則匹配成功后立即進(jìn)行重定向操作
permanent 該標(biāo)記和redirect類似,但是永久重定向
set 標(biāo)記表示當(dāng)前規(guī)則匹配成功設(shè)置一個(gè)變量,并把變量傳入下一跳規(guī)則
location分類
location = [字符串]{} #精準(zhǔn)匹配
location [字符串]{} #一般匹配
location [字符串]{} #正則匹配
~ #執(zhí)行一個(gè)正則匹配,區(qū)分大小寫(xiě)
~* #不區(qū)分大小寫(xiě)
!~ #區(qū)分大小寫(xiě)取反
!~* #不區(qū)分大小寫(xiě)取反
^~ #普通字符匹配,使用前綴匹配,如果匹配成功則不再進(jìn)行其他匹配
= #普通字符,精準(zhǔn)匹配
@ #定義一個(gè)命名的location,使用在內(nèi)部定義
location優(yōu)先級(jí)
優(yōu)先匹配精確匹配(=)
其次前綴匹配(^~)
其次再按照文件中順序的正則匹配(~或者~*)
然后匹配不帶任何修飾的前綴匹配(常規(guī)字符串匹配)
通用匹配(/)如果沒(méi)有其他匹配,任何請(qǐng)求都可以符合匹配
執(zhí)行順序
精確 > 前綴 > 正則 > 一般 > 通用
優(yōu)先級(jí)相同的情況下,執(zhí)行順序由上到下按順序執(zhí)行
rewrite和location相比
都可以實(shí)現(xiàn)跳轉(zhuǎn)(相同點(diǎn))
rewrite是在同一個(gè)域名內(nèi)更改獲取資源的路徑
location是對(duì)一類路徑做控制訪問(wèn)或者反向代理,還可以proxy_pass到其他機(jī)器
rewrite會(huì)寫(xiě)在location里(按順序執(zhí)行)
執(zhí)行Server塊里面的rewrite指令
執(zhí)行l(wèi)ocation匹配
執(zhí)行選定的location中的rewrite指令
三、跳轉(zhuǎn)案例
實(shí)現(xiàn)域名跳轉(zhuǎn)
首先要先關(guān)閉防火墻和安全機(jī)制
第一步 修改指定配置文件

修改指定用戶Nginx
首先要有nginx的程序用戶
cat /etc/passwd #查看是否有nginx用戶,是否是程序用戶

修改對(duì)應(yīng)域名(自定義即可)
修改指定的日志文件,后面的main可加可不加
添加域名重定向

第二步 檢查語(yǔ)法錯(cuò)誤
保存并退出
nginx -t #檢查是否有語(yǔ)法問(wèn)題

第三步 有報(bào)錯(cuò)進(jìn)行排錯(cuò)
這里找不到日志
無(wú)法識(shí)別到日志格式
接著進(jìn)入配置文件

再次保存并退出
再次查看是否有錯(cuò)誤

手動(dòng)創(chuàng)建日志文件
并且進(jìn)行賦權(quán)

第四步 添加域名映射關(guān)系
修改域名解析
vim /etc/hosts

第五步 重啟服務(wù)
重啟服務(wù)
systemctl restart nginx

第六步 測(cè)試結(jié)果
用瀏覽器進(jìn)行訪問(wèn)測(cè)試

查看網(wǎng)頁(yè)元素
詳細(xì)信息的網(wǎng)址和狀態(tài)碼





舊域名跳轉(zhuǎn)新域名
第一步 修改配置文件

第二步 添加域名映射關(guān)系

第三步 重啟服務(wù)
命令:systemctl restart nginx

第四步 創(chuàng)建網(wǎng)頁(yè)執(zhí)行文件

第五步 用瀏覽器進(jìn)行測(cè)試



我們跳轉(zhuǎn)成功
但是網(wǎng)頁(yè)內(nèi)沒(méi)有內(nèi)容
跳轉(zhuǎn)可以正常跳轉(zhuǎn)但不顯示網(wǎng)頁(yè)內(nèi)容
第六步 處理錯(cuò)誤(排錯(cuò))

第七步 重新測(cè)試訪問(wèn)


基于參數(shù)進(jìn)行匹配跳轉(zhuǎn)
第一步 修改配置文件

第二步 檢查語(yǔ)法錯(cuò)誤
命令:nginx -t

第三步 重啟服務(wù)
命令:systemctl restart nginx

第四步 設(shè)置映射關(guān)系
命令:vim /etc/hosts

第五步 用瀏覽器進(jìn)行測(cè)試


基于客戶端IP地址訪問(wèn)跳轉(zhuǎn)
第一步 修改配置文件

第二步 檢測(cè)文件語(yǔ)法問(wèn)題
命令:nginx -t

第三步 創(chuàng)建網(wǎng)頁(yè)返回執(zhí)行文件

第四步 重啟服務(wù)
命令:systemctl restart nginx

第五步 用瀏覽器進(jìn)行訪問(wèn)測(cè)試


基于目錄下PHP文件進(jìn)行跳轉(zhuǎn)
第一步 修改配置文件

第二步 檢查文件語(yǔ)法問(wèn)題
命令:nginx -t

第三步 重啟服務(wù)
命令:systemctl restart nginx

第四步 用瀏覽器進(jìn)行測(cè)試


基于普通的RUL進(jìn)行請(qǐng)求跳轉(zhuǎn)
第一步 修改配置文件

第二步 檢查是否存在語(yǔ)法問(wèn)題
命令:nginx -t

第三步 重啟服務(wù)
命令:systemctl restart nginx

第四步 用瀏覽器進(jìn)行訪問(wèn)測(cè)試


到此這篇關(guān)于Nginx Rewrit實(shí)現(xiàn)網(wǎng)頁(yè)跳轉(zhuǎn)功能詳細(xì)步驟的文章就介紹到這了,更多相關(guān)Nginx Rewrit網(wǎng)頁(yè)跳轉(zhuǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
nginx 配置代理服務(wù)地址最后多加反斜杠和不加反斜杠的區(qū)別小結(jié)
在使用Nginx配置代理服務(wù)時(shí),地址最后是否添加反斜杠(/)會(huì)對(duì)代理的URL處理產(chǎn)生影響,下面就來(lái)具體介紹一下,感興趣的可以了解一下2024-08-08
windows10 系統(tǒng)配置nginx文件服務(wù)器的圖文教程
這篇文章主要介紹了windows10 系統(tǒng)配置nginx文件服務(wù)器的圖文教程,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12
Nginx?HttpHeader增加幾個(gè)關(guān)鍵的安全選項(xiàng)問(wèn)題小結(jié)
本文給大家介紹Nginx?HttpHeader增加幾個(gè)關(guān)鍵的安全選項(xiàng)問(wèn)題小結(jié),結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2024-12-12
編寫(xiě)Go程序?qū)ginx服務(wù)器進(jìn)行性能測(cè)試的方法
這篇文章主要介紹了編寫(xiě)Go程序?qū)ginx服務(wù)器進(jìn)行性能測(cè)試的方法,包括對(duì)其負(fù)載均衡和緩存等方面的測(cè)試,極力推薦!需要的朋友可以參考下2015-06-06
nginx實(shí)現(xiàn)數(shù)據(jù)庫(kù)端口轉(zhuǎn)發(fā)
本文主要介紹了nginx實(shí)現(xiàn)數(shù)據(jù)庫(kù)端口轉(zhuǎn)發(fā),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03

