nginx中url地址重寫(xiě)的實(shí)現(xiàn)
一.url重寫(xiě)介紹【在進(jìn)行url地址替換的時(shí)候,常常用完整的url地址進(jìn)行替換】
可以在nginx上進(jìn)行配置,將客戶(hù)端的訪問(wèn)請(qǐng)求進(jìn)行修改,隨后拿修改后的地址給客戶(hù)端進(jìn)行響應(yīng)。
如上圖所示,這是使用url地址重寫(xiě)的兩種應(yīng)用場(chǎng)景。
一種是https加密網(wǎng)站,nginx反向代理服務(wù)器可以對(duì)用戶(hù)的url地址進(jìn)行重寫(xiě),加上https的前綴,
一種是當(dāng)公司的業(yè)務(wù)結(jié)構(gòu)發(fā)生變化的時(shí)候,用戶(hù)用之前的訪問(wèn)地址不能訪問(wèn)到之前想要訪問(wèn)的內(nèi)容,這時(shí)候就可以使用nginx反向代理服務(wù)器的url地址重寫(xiě)功能,將用戶(hù)的url地址進(jìn)行重寫(xiě)。使得用戶(hù)能夠再次以之前的訪問(wèn)地址,訪問(wèn)到之前想要訪問(wèn)的內(nèi)容。
語(yǔ)法:
rewrite uri地址,新uri地址【標(biāo)志】;
1.server ,location,if條件判斷
2.rewrite可以存在多條,依次進(jìn)行處理
3.舊uri地址支持正則表達(dá)式;新uri支持反向引用
4.舊uri地址匹配客戶(hù)端時(shí),不包括請(qǐng)求中的參數(shù)
如上圖所示,舊uri地址在匹配客戶(hù)端請(qǐng)求的時(shí)候,是不包含匹配中的參數(shù),舊uri地址中是會(huì)有一個(gè)問(wèn)號(hào),這個(gè)問(wèn)號(hào)之后的東西就是uri地址中的參數(shù),
5.支持變量中的使用 $remote_addr這個(gè)表示客戶(hù)端的IP地址。
如上圖所示,如果客戶(hù)端的訪問(wèn)請(qǐng)求,可以在location中經(jīng)歷10次的地址重寫(xiě),那么就會(huì)給客戶(hù)端返回500的錯(cuò)誤。
標(biāo)志flag
【很少去用,常常在地址改寫(xiě)的時(shí)候,寫(xiě)上完整的url地址?!?/p>
1)last
終止本location塊中的匹配,將新地址轉(zhuǎn)交給下一個(gè)location處理。
2)break
不會(huì)將新地址交給其他的location處理,只在本location中處理。
如上圖所示,這兩種方式都無(wú)法結(jié)束location的循環(huán),但是如上圖所示,如果被改寫(xiě)的uri地址是一個(gè)完整的url地址的時(shí)候,那么此時(shí)就可以結(jié)束location的循環(huán)。
3)redirect
表示這次改寫(xiě)是一次臨時(shí)重定向,狀態(tài)碼302
4)permanet
永久重定向,狀態(tài)碼301
如上圖所示,這是nginx的重寫(xiě)模塊
如上圖所示,這就是對(duì)一個(gè)url地址的重寫(xiě)過(guò)程。
案例1:改寫(xiě)地址中的目錄名稱(chēng)
如上圖所示,虛擬主機(jī)的網(wǎng)頁(yè)目錄是/data/python
如上圖所示,這是在虛擬主機(jī)的網(wǎng)頁(yè)目錄下新創(chuàng)建一個(gè)目錄,并且創(chuàng)建網(wǎng)頁(yè),
如上圖所示,現(xiàn)在公司的業(yè)務(wù)結(jié)構(gòu)發(fā)生變化,之前的mp3目錄改名了改成了music,那么用戶(hù)要想用之前的訪問(wèn)請(qǐng)求,訪問(wèn)之前的數(shù)據(jù)內(nèi)容,就需要我nginx反向代理服務(wù)器實(shí)現(xiàn)url地址重寫(xiě)功能。
如上圖所示,這是在沒(méi)有配置nginx服務(wù)器反向代理服務(wù)器的地址重寫(xiě)功能。
如上圖所示,這是在虛擬主機(jī)的配置文件中進(jìn)行修改的過(guò)程,
如上圖所示,這是在修改虛擬主機(jī)配置文件之后,對(duì)語(yǔ)法進(jìn)行檢查,隨后使得nginx軟件重新識(shí)別配置文件的操作。
如上圖所示,這就是url地址重寫(xiě)的例子。
【考慮實(shí)際需求,當(dāng)我們?nèi)?shí)際部署一個(gè)業(yè)務(wù)的時(shí)候,不可能這個(gè)業(yè)務(wù)只有一個(gè)網(wǎng)頁(yè),如果這個(gè)業(yè)務(wù)有多個(gè)網(wǎng)頁(yè)。當(dāng)目錄名稱(chēng)發(fā)生變化的時(shí)候,該怎么辦?】
如上圖所示,這是訪問(wèn)目錄下有多個(gè)網(wǎng)頁(yè)。
如上圖所示,當(dāng)新的數(shù)據(jù)目錄下有多個(gè)網(wǎng)頁(yè),
如上圖所示,這是利用正則表達(dá)式的反向引用。將所有mp3替換成music,并且引用用戶(hù)想要訪問(wèn)的網(wǎng)頁(yè)名稱(chēng)。
$1的意思就是要引用(.*)中的內(nèi)容。
案例2:域名跳轉(zhuǎn)
客戶(hù)端訪問(wèn)我的時(shí)候,后面的訪問(wèn)地址是什么都可以,都會(huì)跳轉(zhuǎn)到我指定的新的網(wǎng)站上。
案例3:實(shí)現(xiàn)https的自動(dòng)跳轉(zhuǎn)
如上圖所示,如果客戶(hù)端要訪問(wèn)我www.linux.com的網(wǎng)站,那我們就自動(dòng)給這個(gè)網(wǎng)站加上https的前綴
到此這篇關(guān)于nginx中url地址重寫(xiě)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)nginx url地址重寫(xiě)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- nginx支持codeigniter的pathinfo模式url重寫(xiě)配置寫(xiě)法示例
- Nginx服務(wù)器下使用rewrite重寫(xiě)url以實(shí)現(xiàn)偽靜態(tài)的示例
- 詳解Nginx 反向代理、負(fù)載均衡、頁(yè)面緩存、URL重寫(xiě)及讀寫(xiě)分離詳解
- 在phpstudy集成環(huán)境下的nginx服務(wù)器下配置url重寫(xiě)
- Nginx URL重寫(xiě)rewrite機(jī)制原理及使用實(shí)例
- 解決nginx代理?url重寫(xiě)的問(wèn)題
- Nginx之rewrite實(shí)現(xiàn)URL重寫(xiě)方式
相關(guān)文章
基于Nginx的衍生版服務(wù)器Tengine簡(jiǎn)介
這篇文章主要介紹了基于Nginx的衍生版服務(wù)器Tengine簡(jiǎn)介,本文講解了Nginx的特性、Tengine的特性、架構(gòu)和擴(kuò)展性等內(nèi)容,需要的朋友可以參考下2015-03-03瀏覽器控制臺(tái)報(bào)錯(cuò)Failed to load module script:解決方
這篇文章主要為大家介紹了瀏覽器控制臺(tái)報(bào)錯(cuò)Failed to load module script:解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11nginx 部署啟動(dòng)jar包用到的一些命令和流程操作
這篇文章主要介紹了nginx 部署啟動(dòng)jar包用到的一些命令和流程操作,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-11-11Centos7.3 安裝部署Nginx并配置https的方法步驟
這篇文章主要介紹了Centos7.3 安裝部署Nginx并配置https的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Nginx解決vue項(xiàng)目服務(wù)器部署及跨域訪問(wèn)后端詳解
跨域問(wèn)題在前后端分離項(xiàng)目很常見(jiàn),至于為什么會(huì)跨域,同源策略,百度各種博客都很詳細(xì),這里不再介紹,這篇文章主要給大家介紹了關(guān)于Nginx解決vue項(xiàng)目服務(wù)器部署及跨域訪問(wèn)后端的相關(guān)資料,需要的朋友可以參考下2022-11-11基于nginx的靜態(tài)網(wǎng)頁(yè)部署的實(shí)現(xiàn)
這篇文章主要介紹了基于nginx的靜態(tài)網(wǎng)頁(yè)部署的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06配置Nginx服務(wù)器展示隨機(jī)首頁(yè)與空白圖片的方法
這篇文章主要介紹了配置Nginx服務(wù)器展示隨機(jī)首頁(yè)與空白圖片的方法,分別用到了ngx_http_random_index_module模塊和ngx_http_empty_gif_module模塊,需要的朋友可以參考下2016-01-01