国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Nginx快速入門:return、rewrite重定向、重寫詳解(六)

這篇具有很好參考價值的文章主要介紹了Nginx快速入門:return、rewrite重定向、重寫詳解(六)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

0. 引言

我們在日常的生產(chǎn)過程中,常常有需要重定向轉(zhuǎn)發(fā)的需求,比如企業(yè)更換了域名,但又要保證之前的域名能訪問,這就需要做重定向的跳轉(zhuǎn)。

我們在之前的章節(jié)中學(xué)習(xí)了Nginx的負載均衡、各類轉(zhuǎn)發(fā)代理配置,今天繼續(xù)來補充關(guān)于轉(zhuǎn)發(fā)的的最后一個環(huán)節(jié)——重定向(或稱跳轉(zhuǎn))

1. 重定向、重寫詳解

什么是重定向?

重定向是指將客戶端的請求從一個URL自動重定向到另一個URL。這通常是通過服務(wù)器發(fā)送一個特定的HTTP狀態(tài)碼來完成的,告訴客戶端(以及搜索引擎)資源已經(jīng)移動到了新的位置。重定向可以是臨時的(302 Found)或永久的(301 Moved Permanently)

一句話概括:重定向轉(zhuǎn)發(fā)時瀏覽器上的地址是會變化的,客戶是能感知到的

什么是重寫?

重寫是指在不改變URL的情況下,修改客戶端請求的HTTP請求行(request line)或路徑。這通常用于URL的標(biāo)準(zhǔn)化或修改,而不需要告訴客戶端資源已經(jīng)移動。重寫通常在服務(wù)器配置文件中完成,例如在Nginx的rewrite指令中。

一句話概括:重寫轉(zhuǎn)發(fā)時瀏覽器上的地址是會不會變化的,客戶是無感的

應(yīng)用場景:
重定向用于告訴客戶端資源已經(jīng)移動到了新位置
重寫用于在不改變客戶端URL的情況下修改請求

1.1 return 詳解

1.1.1 return 核心概念

介紹:

return指令用于立即結(jié)束當(dāng)前處理塊的執(zhí)行,并返回一個狀態(tài)碼給客戶端。這個狀態(tài)碼可以是204(No Content)、400(Bad Request)到500(Server Error)之間的任何值。
return通常用于訪問控制、錯誤處理或配置特定的HTTP響應(yīng)
該指令可以返回指定的響應(yīng)碼和重定向URL給客戶端,也可以返回指定的響應(yīng)碼和文本給客戶端

作用域:

server, location, if

語法:

return code [text];
return code URL;
return URL;

return的狀態(tài)碼為301、302、303、307、308時,則為重定向;
return的狀態(tài)碼為其他時,可以返回響應(yīng)主體[text]。

1.1.2 return 案例

官方文檔:https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#return

  • 1、返回指定狀態(tài)碼和文本

如果要返回文本,需要指定 default_type application/json;,不配置的話,跳轉(zhuǎn)會默認以下載文件形式

location ~ /user {
    default_type application/json; 
    return 200 "跳轉(zhuǎn)成功";
}
  • 2、重定向到指定鏈接

重定向分為臨時重定向和永久重定向:

永久重定向:
301,308 表示永久重定向,重定向結(jié)果會緩存,下次請求直接從緩存獲??;區(qū)別在于301會進行方法轉(zhuǎn)變,比如一個POST提交的請求,會轉(zhuǎn)換為GET請求轉(zhuǎn)發(fā),而308則會保持原本方法進行轉(zhuǎn)發(fā)

臨時重定向:
300,該請求有多種可能的響應(yīng),瀏覽器可以選擇它們其中的一個。服務(wù)器沒有任何標(biāo)準(zhǔn)可以遵循去代替用戶來進行選擇
302,重定向請求轉(zhuǎn)發(fā)時使用 GET 方法,不管原請求使用的是何種方法
303,基本跟 302 一致,所以很少用 303,都是使用 302
307,為了補充 302.重定向必須使用原請求的方法和包體訪問

location /user/ {
        return 300 "http://www.baidu.com";
    }

或者

location /user/ {
        return "http://www.baidu.com";
    }

nginx return和rewrite,# Nginx快速上手,nginx,運維
nginx return和rewrite,# Nginx快速上手,nginx,運維
3、返回一個自定義頁面,并將參數(shù)、uri打印出來

location /test {
     default_type text/html;
     set $name 跳轉(zhuǎn)成功;
     return 200 <html><p>$name</p><p>request_uri:$request_uri</p><p>document_uri:$document_uri</p><p>uri:$uri</p><p>query_string:$query_string</p><p>args:$args</p></html>;
 }

注意,要讓nginx支持顯示中文,需要在nginx.conf中配置:

http {
     ...
    charset utf-8;
}

nginx return和rewrite,# Nginx快速上手,nginx,運維

1.2 rewrite 詳解

1.2.1 rewrite 核心概念

官方文檔:https://nginx.org/en/docs/http/ngx_http_rewrite_module.html
介紹:

Nginx 的 rewrite 模塊是一個功能豐富的組件,它使得用戶能夠通過正則表達式對請求的 URI 進行重寫。rewrite 模塊支持 PCRE(Perl Compatible Regular Expressions)正則表達式,這為用戶提供了強大的匹配和重寫能力。通過正則表達式,用戶可以精確地控制哪些請求需要被重寫以及重寫后的 URI。同時,rewrite 模塊還提供了一系列的標(biāo)記(flag),如 last、break、redirect、permanent 等,以控制重寫后的行為,例如是否繼續(xù)執(zhí)行后續(xù)的重寫規(guī)則、是否返回重定向響應(yīng)等。這個功能通常用于以下幾種場景:

  • URL 規(guī)范化:使 URL 看起來更規(guī)范、合理,便于用戶記憶和搜索引擎優(yōu)化。
  • 動態(tài) URL 地址偽裝:企業(yè)常常將動態(tài) URL 地址偽裝成靜態(tài)地址提供服務(wù),以提高系統(tǒng)的負載能力和用戶體驗。
  • 域名更換:當(dāng)網(wǎng)站更換域名時,可以通過 rewrite 指令將舊域名的訪問跳轉(zhuǎn)到新域名上,確保用戶的訪問不會受到影響。
  • 業(yè)務(wù)調(diào)整:在服務(wù)端進行某些業(yè)務(wù)調(diào)整時,可能需要通過重寫 URL 來實現(xiàn)特定的訪問控制或數(shù)據(jù)分發(fā)。

作用域:

server, location, if

語法:

rewrite regex replacement [flag];

可選的flag參數(shù):

  • last

標(biāo)記表示在執(zhí)行了當(dāng)前的重寫規(guī)則后,繼續(xù)執(zhí)行后續(xù)的 rewrite 規(guī)則或 location 匹配。
它通常用在 server 塊或 if 塊中,以確保重寫規(guī)則可以與其他規(guī)則組合使用,形成一個規(guī)則鏈。

  • break

標(biāo)記表示在執(zhí)行了當(dāng)前的重寫規(guī)則后,停止執(zhí)行后續(xù)的所有 rewrite 規(guī)則。
它通常用在 location 塊中,用于確保一旦某個重寫規(guī)則匹配并執(zhí)行后,不會繼續(xù)執(zhí)行其他可能存在的重寫規(guī)則。

  • redirect:

標(biāo)記表示重寫規(guī)則執(zhí)行后,返回一個重定向響應(yīng)(HTTP 302 狀態(tài)碼)給客戶端,而不是繼續(xù)處理請求。
它用于實現(xiàn)臨時性的重定向,比如在網(wǎng)站維護時將用戶重定向到另一個地址。

  • permanent

標(biāo)記表示重寫規(guī)則執(zhí)行后,返回一個永久重定向響應(yīng)(HTTP 301 狀態(tài)碼)給客戶端,并且后續(xù)的請求應(yīng)該直接跳轉(zhuǎn)到新的 URI,而不是再次執(zhí)行重寫規(guī)則。
它用于實現(xiàn)永久性的重定向,比如在域名更改后,將舊域名重定向到新域名。

301和302的應(yīng)用場景:
302 需要經(jīng)常變化跳轉(zhuǎn)路徑的uri則使用302
301 基本不變的調(diào)整uri(http跳轉(zhuǎn)https、seo)

1.2.2 rewrite 案例

1、替換舊域名xxx.com為新域名yyy.com

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

2、舊域名訪問/user/的請求跳轉(zhuǎn)新域名,并且訪問在路徑上添加/new/


server {
	listen       80;
	server_name  www.xxx.com;		
	charset utf-8;
	
	#添加
	locatoin /user/ {
        rewirte (.+) http://www.newxxx.com/new$1 permanent;		#這里的$1為位置變量,代表/user/
    }
	
	locaiton / {
        root   html;
        index  index.html index.htm;
    }
}

3、將動態(tài)鏈接改為偽靜態(tài)鏈接(看起來像是靜態(tài)鏈接的地址)

用戶訪問:www.xxx.com/user/view/3/index.html
實際地址:http://www.xxx.com/user/index.jsp?post=3&action=view

location ~ /user/view {
    rewrite /user/(.*)/(.*)/(.*).html /user/$3.jsp?post=$2&action=$1 last;
}
$N 表示第幾個括號中的變量

4、業(yè)務(wù)新版本上線,要求所有 IP 訪問任何內(nèi)容都顯示一個維護頁面,只有允許 IP 192.168.244.2訪問后臺業(yè)務(wù)

先創(chuàng)建維護頁面

ehho "<h1>系統(tǒng)升級中... 持續(xù)時間 2023-12-24 23:00:00 -2023-12-24 23:50:00 </h1>" > /var/www/html/system.html

修改配置

server {
	listen       80;
	server_name  www.xxx.com;		
	charset utf-8; # 顯示中文
 
	# 是否轉(zhuǎn)發(fā)標(biāo)記
    set $rewrite true;							#設(shè)置變量$rewrite,變量值為boole值true
    # 是否為內(nèi)部IP
	if ($remote_addr = "192.168.244.2"){		
        set $rewrite false;
    }
	# 跳轉(zhuǎn)維護頁面
    if ($rewrite = true){						
        rewirte (.+) /system.html;				#將域名后邊的路徑重寫成/system.html
    }
    location = /system.html {
        root /var/www/html;						#網(wǎng)頁返回維護頁面
    }
	
	location / {
        root   html;
        index  index.html index.htm;
    }
}

5、項目升級,但部分jsp鏈接未升級,需要將所有.jsp訪問轉(zhuǎn)發(fā)到原項目

location ~* .*\.jsp {
        rewrite (.+) http://www.old.xxx.com$1 permanent;
}

2. 總結(jié)

本章,我們重點講解了重定向和重寫的區(qū)別,并且講解了return,rewrite的用法,用實際的案例進行了演示,下一節(jié)我們將展示nginx如何實現(xiàn)企業(yè)安全防護文章來源地址http://www.zghlxwxcb.cn/news/detail-828657.html

到了這里,關(guān)于Nginx快速入門:return、rewrite重定向、重寫詳解(六)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • nginx rewrite(重定向)

    nginx rewrite(重定向)

    目錄 一、什么是rewrite 二、rewrite使用場景 三、rewrite配置語法 四、常用的nginx正則表達式 五、nginx 配置文件里 location 項 1、localtion 作用 2、location 可以分為三類 3、location 的常用匹配規(guī)則 4、location 的 優(yōu)先級與匹配規(guī)則 5、location 示例說明 六、案例 七、rewrite總結(jié) ? ? ? ?R

    2024年02月11日
    瀏覽(19)
  • Nginx重寫功能location與rewrite

    Nginx重寫功能location與rewrite

    從功能看 rewrite 和 location 似乎有點像,都能實現(xiàn)跳轉(zhuǎn),主要區(qū)別在于 rewrite 是在同一域名內(nèi)更改獲取資源的路徑,而 location 是對一類路徑做控制訪問或反向代理,還可以proxy_pass 到其他機器。 rewrite 對訪問的域名或者域名內(nèi)的URL路徑地址重寫。 location 對訪問的路徑做訪問控

    2024年01月20日
    瀏覽(22)
  • Nginx rewrite地址重寫(十個例子詳細解析)

    Rewrite在nginx中也叫URL Rewrite,即URL重寫,就是把傳入Web的請求重定向到其他URL的過程 從安全角度考慮,使用Rewrite在Nginx中具有一些重要的作用和優(yōu)勢,包括: 隱藏真實目錄結(jié)構(gòu): 使用Rewrite可以隱藏服務(wù)器上的真實文件路徑和目錄結(jié)構(gòu),防止攻擊者通過直接訪問文件路徑來獲

    2024年04月27日
    瀏覽(14)
  • nginx重定向問題解決(rewrite or internal redirection cycle)

    訪問日志文件 nginx.conf配置文件內(nèi)容 根據(jù)提供的訪問日志和nginx.conf配置文件分析,是循環(huán)重定向的問題。 配置中,location / 塊使用了 try_files $uri $uri/ /index.html; 會導(dǎo)致導(dǎo)致在嘗試訪問根目錄時發(fā)生重定向循環(huán)。 修改:添加一個新的 location=/index 塊,直接提供 /index.html 而不進行

    2024年02月05日
    瀏覽(29)
  • Nginx Rewrite詳解

    Nginx Rewrite詳解

    目錄 一、Rewrite跳轉(zhuǎn)場景 二、Rewrite跳轉(zhuǎn)實現(xiàn) 三、Rewrite實際場景 1.nginx跳轉(zhuǎn)需求的實現(xiàn)方式: 2.rewrite放在server{},if{},location{}段中 3.對域名或參數(shù)字符串 四、Rewrite正則表達式 五、Rewrite命令/語法格式 六、Location分類 1. location 大致可以分為三類: 2.location 常用的匹配規(guī)則:

    2024年02月07日
    瀏覽(16)
  • nginx http rewrite module 詳解

    大家好,我是 17。 今天和大家聊聊 nginx http rewrite module 。 簡單來說, ngx_http_rewrite_module module 用正則匹配請求,改寫請求,然后做跳轉(zhuǎn)??梢允莾?nèi)部跳轉(zhuǎn),也可以是外部跳轉(zhuǎn)。 學(xué)習(xí)這個模塊的時候,把 rewrite_log 打開,可以在 error log 里查看跳轉(zhuǎn)信息 注意 notice 是必須的 直接

    2023年04月08日
    瀏覽(17)
  • 分布式 - 服務(wù)器Nginx:一小時入門系列之 rewrite 指令

    1. rewrite 指令語法 nginx的rewrite指令用于重寫URL,可以將一個URL重寫為另一個URL。它的語法如下: 其中,regex是一個正則表達式,用于匹配需要重寫的URL;replacement是重寫后的URL;flag是可選的標(biāo)志,用于控制重寫的行為。flag 的常見取值為 last 和 break,都是用于控制重寫規(guī)則執(zhí)

    2024年02月11日
    瀏覽(23)
  • Nginx快速入門:nginx各類轉(zhuǎn)發(fā)、代理配置詳解|location、proxy_pass參數(shù)詳解(五)

    Nginx快速入門:nginx各類轉(zhuǎn)發(fā)、代理配置詳解|location、proxy_pass參數(shù)詳解(五)

    咱們上節(jié)講解了nginx的負載均衡配置,但是還有很多其他的轉(zhuǎn)發(fā)情況,包括不同路徑轉(zhuǎn)發(fā)至不同的業(yè)務(wù)服務(wù),通配符識別路徑轉(zhuǎn)發(fā)等。 今天一起來學(xué)習(xí)nginx的轉(zhuǎn)發(fā)配置 首先我們要了解nginx進行轉(zhuǎn)發(fā)代理的核心在于兩處,一是入口,二是出口;入口就是url路徑匹配識別對應(yīng)的路

    2024年01月20日
    瀏覽(29)
  • 分布式 - 服務(wù)器Nginx:一小時入門系列之 return 指令

    分布式 - 服務(wù)器Nginx:一小時入門系列之 return 指令

    1. return 指令語法 return指令用于立即停止當(dāng)前請求的處理,并返回指定的HTTP狀態(tài)碼和響應(yīng)頭信息,它可以用于在Nginx中生成自定義錯誤頁面,或者在Nginx中重定向到另一個URL,它的語法如下: 其中,code 是 HTTP 狀態(tài)碼,可以是 2xx、3xx、4xx 或 5xx 等。text 是可選的文本信息,用于

    2024年02月11日
    瀏覽(25)
  • Nginx服務(wù)之Rewrite

    Nginx服務(wù)之Rewrite

    目錄 一、Rewrite實際場景 1、Nginx跳轉(zhuǎn)需求的實現(xiàn)方式 2、rewrite放在server{},if{}, location{}段中 3、對域名或參數(shù)字符串 二、Nginx 正則表達式 三、Rewrite命令 四、Location 分類 1、分類? 2、正則匹配的常用表達式 3、location 優(yōu)先級 4、Nginx在實際網(wǎng)站中至少有三個匹配規(guī)則定義 4.1第

    2024年02月14日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包