亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Nginx的重寫(xiě)Rewrite使用示例分析

 更新時(shí)間:2022年05月26日 14:55:31   作者:活老鬼  
這篇文章主要介紹了Nginx Rewrite功能使用,rewrite是Nginx服務(wù)器提供的一個(gè)重要基本功能,主要作用用來(lái)實(shí)現(xiàn)URL地址重寫(xiě),需要的朋友可以參考下

一、Nginx Rewrite概述

Nginx Rewrite是Nginx服務(wù)器提供的一個(gè)重要基本功能,主要用于實(shí)現(xiàn)URL的重寫(xiě)和重定向。

Nginx Rewrite的作用:

  • URL地址規(guī)范化:通過(guò)重寫(xiě)URL,使其看起來(lái)更規(guī)范,更符合開(kāi)發(fā)及產(chǎn)品人員的需求。
  • 搜索引擎優(yōu)化(SEO):將動(dòng)態(tài)URL地址偽裝成靜態(tài)地址提供服務(wù),有助于搜索引擎更好地收錄網(wǎng)站內(nèi)容,提升用戶(hù)體驗(yàn)。
  • 域名跳轉(zhuǎn):在網(wǎng)站更換新域名后,通過(guò)Nginx Rewrite實(shí)現(xiàn)舊域名的訪問(wèn)跳轉(zhuǎn)到新域名上,確保用戶(hù)能夠順利訪問(wèn)網(wǎng)站。
  • 基于特定條件的URL調(diào)整:根據(jù)特殊變量、目錄、客戶(hù)端的信息等條件進(jìn)行URL調(diào)整,以滿(mǎn)足不同的訪問(wèn)需求。

二、常用的Nginx正則表達(dá)式

常用正則表達(dá)式解釋
^匹配輸入字符串的起始位置
$匹配輸入字符串的結(jié)束位置
匹配前面的字符零次或多次
+匹配前面的字符一次或多次
?匹配前面的字符零次或一次
.匹配除“\n”之外的任何單個(gè)字符
\將后面接著的字符標(biāo)記為一個(gè)特殊字符或一個(gè)原義字符或一個(gè)向后引用
\d匹配純數(shù)字[0-9]
\D匹配非數(shù)字
\s匹配空白符
\S匹配非空白符
\w任意單詞字符包括下劃線(xiàn)[A-Za-z0-9_]
\W匹配非單詞
{n}匹配前一個(gè)字符重復(fù) n 次
{n,}匹配前一個(gè)字符重復(fù) n 次或更多次
{n,m}匹配前一個(gè)字符重復(fù) n 到 m 次
[]定義匹配的字符范圍
() 表達(dá)式的開(kāi)始和結(jié)束位置
邏輯或運(yùn)算符

三、Rewrite規(guī)則

1.Rewrite跳轉(zhuǎn)實(shí)現(xiàn)

  • Nginx:通過(guò)ngx_http_rewrite_module 模塊支持URL重寫(xiě)、支持if條件判斷,但不支持else
  • 跳轉(zhuǎn):從一個(gè) location跳轉(zhuǎn)到另一個(gè)location,循環(huán)最多可以執(zhí)行10次,超過(guò)后nginx將返回500錯(cuò)誤
  • PCRE支持:perl兼容正則表達(dá)式的語(yǔ)法規(guī)則匹配
  • 重寫(xiě)模塊 set 指令:創(chuàng)建新的變量并設(shè)其值

2.Rewrite執(zhí)行順序

  • 執(zhí)行 server 塊里面的 rewrite 指令。
  • 執(zhí)行 location 匹配。
  • 執(zhí)行選定的 location 中的 rewrite 指令。

3.Rewrite語(yǔ)法格式

語(yǔ)法格式:

rewrite <regex> <replacement> [flag];

  • regex :表示正則匹配規(guī)則。
  • replacement :表示跳轉(zhuǎn)后的內(nèi)容。
  • flag :表示 rewrite 支持的 flag 標(biāo)記。

Flag標(biāo)記說(shuō)明:

  • last :本條規(guī)則匹配完成后,不終止重寫(xiě)后的url匹配,一般用在 server 和 if 中。
  • break :本條規(guī)則匹配完成即終止,終止重寫(xiě)后的url匹配,一般使用在 location 中。
  • redirect :返回302臨時(shí)重定向,瀏覽器地址會(huì)顯示跳轉(zhuǎn)后的URL地址。
  • permanent :返回301永久重定向,瀏覽器地址欄會(huì)顯示跳轉(zhuǎn)后的URL地址。

四、Rewrite應(yīng)用示例

1.基于域名的跳轉(zhuǎn)

現(xiàn)在公司舊域名www.xxxxxx01.com有業(yè)務(wù)需求變更,需要使用新域名www.xxxxxx02.com代替,但是舊域名不能廢除,需要跳轉(zhuǎn)到新域名上,而且后面的參數(shù)保持不變。

server {
	listen       80;
	server_name  www.bi01.com;    #域名修改	
	charset utf-8;
	access_log  /var/log/nginx/www.xxxxxx01.com-access.log;    #日志修改
	location / {
	#添加域名重定向
        if ($host = 'www.bi01.com'){    #$host為rewrite全局變量,代表請(qǐng)求主機(jī)頭字段或主機(jī)名
			rewrite ^/(.*)$ http://www.xxxxxx02.com/$1 permanent;    #$1為正則匹配的內(nèi)容,即“域名/”之后的字符串
        }
        root   html;
        index  index.html index.htm;
    }
}

2.基于客戶(hù)端IP訪問(wèn)跳轉(zhuǎn)

今天公司業(yè)務(wù)新版本上線(xiàn),要求所有 IP 訪問(wèn)任何內(nèi)容都顯示一個(gè)固定維護(hù)頁(yè)面,只有公司 IP :192.168.80.10訪問(wèn)正常。

server {
	listen       80;
	server_name  www.xxxxxx01.com;    #域名修改	
	charset utf-8;
	access_log  /var/log/nginx/www.xxxxxx01.com-access.log;    #日志修改
	location / {
	#添加域名重定向
        if ($host = 'www.bi01.com'){    #$host為rewrite全局變量,代表請(qǐng)求主機(jī)頭字段或主機(jī)名
			rewrite ^/(.*)$ http://www.xxxxxx02.com/$1 permanent;    #$1為正則匹配的內(nèi)容,即“域名/”之后的字符串
        }
        root   html;
        index  index.html index.htm;
    }
}

如果rewrite (.+) /weihu.html; 換成rewrite (.+) /weihu.html permanent; 的話(huà),若不是 192.168.80.10 的主機(jī)訪問(wèn)會(huì)使瀏覽器修改請(qǐng)求訪問(wèn)的 URL 成 http://www.bi01.com/weihu.html 再請(qǐng)求訪問(wèn),這樣就會(huì)進(jìn)入一直在 rewrite 的死循環(huán),訪問(wèn)請(qǐng)求會(huì)一直被重寫(xiě)成http://www.bi01.com/weihu.html 再請(qǐng)求訪問(wèn)

3.基于舊域名跳轉(zhuǎn)到新域名后追加目錄

現(xiàn)在訪問(wèn)的是 http://bbs.xxxxxx01.com/post/,現(xiàn)在需要將這個(gè)域名下面的訪問(wèn)都跳轉(zhuǎn)到http://www.xxxxxx01.com/bbs/post/

server {
	listen       80;
	server_name  bbs.xxxxxx101.com www.xxxxxx01.com;
	charset utf-8;
	access_log  /var/log/nginx/www.xxxxxx01.com-access.log;
	#添加
	location /post {
        rewrite (.+)$ http://www.xxxxxx01.com/bbs$1 permanent;		#這里的$1為位置變量,代表/post
    }
	location / {
        root   html;
        index  index.html index.htm;
    }
}

4.基于參數(shù)匹配的跳轉(zhuǎn)

現(xiàn)在訪問(wèn)http://www.xxxxxx01.com/100-(100|200)-100.html 跳轉(zhuǎn)到http://www.xxxxxx01.com頁(yè)面。

server {
	listen       80;
	server_name  www.xxxxxx01.com;	
	charset utf-8;
	access_log  /var/log/nginx/www.xxxxxx01.com-access.log;
	if ($request_uri ~ ^/100-(100|200)-(\d+).html$) {
        rewrite (.+) http://www.xxxxxx01.com permanent;
    }
	location / {
        root   html;
        index  index.html index.htm;
    }
}
  • $request_uri:包含請(qǐng)求參數(shù)的原始URI,不包含主機(jī)名,如:http://www.xxxxxx101.com/abc/bbs/index.html?a=1&b=2 中的 /abc/bbs/index.php?a=1&b=2
  • $uri:這個(gè)變量指當(dāng)前的請(qǐng)求URI,不包括任何參數(shù),如:/abc/bbs/index.html
  • $document_uri:與$uri相同,這個(gè)變量指當(dāng)前的請(qǐng)求URI,不包括任何傳遞參數(shù),如:/abc/bbs/index.html

到此這篇關(guān)于Nginx的重寫(xiě)Rewrite使用示例分析的文章就介紹到這了,更多相關(guān)Nginx Rewrite內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • nginx 內(nèi)置變量詳解及隔離進(jìn)行簡(jiǎn)單的攔截

    nginx 內(nèi)置變量詳解及隔離進(jìn)行簡(jiǎn)單的攔截

    這篇文章主要介紹了nginx 隔離進(jìn)行簡(jiǎn)單的攔截詳解的相關(guān)資料,這里對(duì)nginx內(nèi)置變量進(jìn)行了簡(jiǎn)單的介紹并對(duì)隔離攔截進(jìn)行了詳解, 需要的朋友可以參考下
    2016-12-12
  • 解決nginx+uwsgi部署Django的所有問(wèn)題(小結(jié))

    解決nginx+uwsgi部署Django的所有問(wèn)題(小結(jié))

    本篇文章主要介紹了解決nginx+uwsgi部署Django的所有問(wèn)題(小結(jié)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • 使用Nginx、Nginx Plus抵御DDOS攻擊的方法

    使用Nginx、Nginx Plus抵御DDOS攻擊的方法

    DDOS 是一種通過(guò)大流量的請(qǐng)求對(duì)目標(biāo)進(jìn)行轟炸式訪問(wèn),導(dǎo)致提供服務(wù)的服務(wù)器資源耗盡進(jìn)而無(wú)法繼續(xù)提供服務(wù)的攻擊手段。這篇文章主要介紹了使用Nginx、Nginx Plus抵御DDOS攻擊的方法,感興趣的小伙伴們可以參考一下
    2018-06-06
  • nginx配置文件使用環(huán)境變量的操作方法

    nginx配置文件使用環(huán)境變量的操作方法

    Nginx是一款開(kāi)源代碼的高性能HTTP服務(wù)器和反向代理服務(wù)器,同時(shí)支持IMAP/POP3/SMTP代理服務(wù),相較于Apache、lighttpd具有占有內(nèi)存少,穩(wěn)定性高等優(yōu)勢(shì),所以深受用戶(hù)喜愛(ài),今天小編給大家分享nginx配置文件使用環(huán)境變量的操作方法,感興趣的朋友一起看看吧
    2021-06-06
  • Nginx負(fù)載均衡配置實(shí)例

    Nginx負(fù)載均衡配置實(shí)例

    這篇文章主要介紹了Nginx負(fù)載均衡配置實(shí)例,隨著互聯(lián)網(wǎng)信息的爆炸性增長(zhǎng),負(fù)載均衡已經(jīng)不再是一個(gè)很陌生的話(huà)題,顧名思義,負(fù)載均衡即是將負(fù)載分?jǐn)偟讲煌姆?wù)單元,既保證服務(wù)的可用性,又保證響應(yīng)足夠快,給用戶(hù)很好的體驗(yàn),需要的朋友可以參考下
    2023-07-07
  • Nginx使用if指令實(shí)現(xiàn)多個(gè)proxy_pass方式

    Nginx使用if指令實(shí)現(xiàn)多個(gè)proxy_pass方式

    這篇文章主要介紹了Nginx使用if指令實(shí)現(xiàn)多個(gè)proxy_pass方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Nginx could not build the server_names_hash 錯(cuò)誤的解決辦法

    Nginx could not build the server_names_hash 錯(cuò)誤的解決辦法

    這篇文章主要介紹了Nginx could not build the server_names_hash 錯(cuò)誤的解決辦法,需要的朋友可以參考下
    2014-03-03
  • nginx中狀態(tài)統(tǒng)計(jì)的實(shí)現(xiàn)

    nginx中狀態(tài)統(tǒng)計(jì)的實(shí)現(xiàn)

    本文主要介紹了nginx中狀態(tài)統(tǒng)計(jì)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 添加Nginx代理配置只允許內(nèi)部IP訪問(wèn)的實(shí)現(xiàn)方法

    添加Nginx代理配置只允許內(nèi)部IP訪問(wèn)的實(shí)現(xiàn)方法

    在本篇文章里小編給大家整理的是一篇關(guān)于添加Nginx代理配置只允許內(nèi)部IP訪問(wèn)的實(shí)現(xiàn)方法的文章,有需要的朋友們可以學(xué)習(xí)下。
    2019-10-10
  • nginx添加ssl模塊的方法教程

    nginx添加ssl模塊的方法教程

    這篇文章主要給大家介紹了關(guān)于nginx添加ssl模塊的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)許吧。
    2017-12-12

最新評(píng)論