最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx中l(wèi)ocation匹配以及rewrite重寫跳轉(zhuǎn)詳解

 更新時間:2022年03月21日 16:48:10   作者:m0_63761361  
訪問重寫 rewrite 是 Nginx HTTP 請求處理過程中的一個重要功能,下面這篇文章主要給大家介紹了Nginx中l(wèi)ocation匹配以及rewrite重寫跳轉(zhuǎn)的相關(guān)資料,需要的朋友可以參考下

前言

rewrite功能就是使用nginx提供的全局變量或自己設(shè)置的變量,結(jié)合正則表達式和標記實現(xiàn)URL重寫以及重定向
例如:更換域名后需要保持舊的域名能夠轉(zhuǎn)到新的域名上、某網(wǎng)頁發(fā)生改變需要跳轉(zhuǎn)到新的頁面、網(wǎng)站防盜鏈等等需求

rewrite只能放在server{},location{},if{}中,并且默認只能對域名后面的除去傳遞的參數(shù)外的字符串起作用
例如:http://www.xjj.com/a/we/index.php?id=1&u=str 只對/a/we/index.php重寫

一、rewrite跳轉(zhuǎn)實現(xiàn)

Nginx:通過ngx_http_rewrite_module模塊支持URL重寫、支持if條件判斷,但不支持else

跳轉(zhuǎn):從一個location跳轉(zhuǎn)到另一個location,循環(huán)最多可以執(zhí)行10次,超過后nginx將返回500錯誤

PCRE支持:perl兼容正則表達式的語法規(guī)則匹配

重寫模塊set指令:創(chuàng)建新的變量并為其賦值

二、rewrite執(zhí)行順序

①執(zhí)行server快里面的rewriter指令

②執(zhí)行l(wèi)ocation匹配

③執(zhí)行選定的location中的rewrite指令

三、rewrite跳轉(zhuǎn)場景

調(diào)整用戶瀏覽的URL,看起來更規(guī)范,合乎開發(fā)及產(chǎn)品人員的需求

為了讓搜索引擎搜錄網(wǎng)站內(nèi)容及用戶體驗更好,企業(yè)會將動態(tài)URL地址偽裝成靜態(tài)地址提供服務(wù)

網(wǎng)址換新域名后,讓舊的訪問跳轉(zhuǎn)到新的域名上;例如,訪問京東的 360buy.com 會跳轉(zhuǎn)到 jd.com

服務(wù)端某些業(yè)務(wù)調(diào)整,比如根據(jù)特殊變量、目錄、客戶端的信息進行URL調(diào)整等

四、語法與flg標記說明

語法rewrite <regex> <replacement> [flag];

regex:表示正則匹配規(guī)則

replacement:表示跳轉(zhuǎn)后的內(nèi)容

flag:表示 rewrite 支持的 flag 標記

flag標記說明:

  • last :本條規(guī)則匹配完成后,繼續(xù)向下匹配新的location URI規(guī)則,一般用在 server 和 if 中
  • break :本條規(guī)則匹配完成即終止,不再匹配后面的任何規(guī)則,一般使用在 location 中
  • redirect :返回302臨時重定向,瀏覽器地址會顯示跳轉(zhuǎn)后的URL地址
  • permanent :返回301永久重定向,瀏覽器地址欄會顯示跳轉(zhuǎn)后的URL地址

五、Nginx常用的正則表達式符號 

六、location

1.分類

location大致可以分為以下三類:

  • 精準匹配:location = / {…}
  • 一般匹配:location / {…}
  • 正則匹配:location ~ / {…}

2.常用匹配規(guī)則

3.優(yōu)先級

  • 首先精準匹配 =
  • 其次前綴匹配 ^~
  • 其次是按文件中順序的正則匹配 ~ 或 ~*
  • 然后是匹配不帶任何修飾的前綴匹配,即一般匹配
  • 最后交給 / 通用匹配,優(yōu)先級最低

 4.示例

 localtion = / {}

=為精準匹配 /,主機名后面不能帶任何字符串,比如訪問 / 和 /xcf,則 / 匹配,/xcf 不匹配

location / {}

因為所有的地址都以 / 開頭,所以這條規(guī)則將匹配到所有的請求,比如訪問 / 和 /data,則 / 匹配,/data也匹配

但若后面是正則表達式,則會和最長字符串優(yōu)先匹配(最長匹配)

location /documents/ {}

匹配任何以 /documents/ 開頭的地址,匹配符合以后,還要繼續(xù)往下搜索其它 location

location /documents/abc {}

匹配任何以 /documents/abc 開頭的地址,匹配符合后,還要繼續(xù)往下搜索其他 location

只有其他 location 后面的正則表達式?jīng)]有匹配到時,才會采用這一條

location ^~ /images/ {}

匹配任何以 /images/ 開頭的地址,匹配符合以后,停止往下搜索正則,并采用這條

location ~* .(gif|jpg|jpeg)$ {}

匹配所有以 gif、jpg、jpeg 為結(jié)尾的請求

然而,所有請求 /images/ 下的圖片會被 location ^~ /images/ 處理,因為 ^~ 的優(yōu)先級更高,所以到達不了這一條正則

location /images/abc {}

最長字符匹配到 /images/abc,優(yōu)先級最低,繼續(xù)往下搜索其它 location,會發(fā)現(xiàn) ^~ 和 ~ 存在

location ~ /images/abc {}

匹配以 /images/abc 開頭的,優(yōu)先級次之,只有去掉 location ^~ /images 才會采用這一條

location /images/abc/1.html {}

匹配 /images/abc/1.html 文件,如果和正則 ~ /images/abc/1.html 相比,正則優(yōu)先級更高

優(yōu)先級總結(jié):

(location = 完整路徑) > (location ^~ 路徑) > (location ,* 正則順序) > (location 部分起始路徑) > (location /)

5.匹配規(guī)則定義

①第一個必選規(guī)則:

直接匹配網(wǎng)站根,通過域名訪問網(wǎng)站首頁比較頻繁,使用這個會加速處理,比如說官網(wǎng)

可以是一個靜態(tài)首頁,也可以直接轉(zhuǎn)發(fā)給后端“應(yīng)用服務(wù)器”——>PHP、Apache(應(yīng)用服務(wù)器如下圖所示)

 

mark

location / {
    root
    html;
    index
    index.html index.html;
}

②第二個必選規(guī)則:

處理靜態(tài)文件請求,這是nginx作為http服務(wù)器的強項(①靜態(tài)請求處理的能力②高并發(fā)處理能力③資源消耗較低)

有兩種配置模式,目錄匹配或后綴匹配,任選其一或搭配使用

location ^~ /static/ {
    root /webroot/static/;
}
 
location ~* \.(html|gif|jpg|jpeg|png|css|js|ico)$ {
    root /webroot/res/ ;
}

③第三個必選規(guī)則:

就是通用規(guī)則,比如用來轉(zhuǎn)發(fā)帶.php、.jsp后綴的動態(tài)請求到后端應(yīng)用服務(wù)器

非靜態(tài)文件請求就默認是動態(tài)請求(跳轉(zhuǎn)/反向代理)

upstream tomcat_server {
		192.168.126.12:80
		192.168.126.23:80
}
location / {
    proxy_ pass http://tomcat_server;

總結(jié):

1.比較rewrite和location

相同點:都實現(xiàn)跳轉(zhuǎn)

不同點:rewrite是在同一域名內(nèi)更改獲取資源的路徑

location是對一類路徑做控制訪問或反向代理,還可以proxy_pass到其他機器

2.rewrite會寫在location里,執(zhí)行順序

  • 執(zhí)行server塊里面的rewrite指令
  • 執(zhí)行l(wèi)ocation匹配
  • 執(zhí)行選定的location中的rewrite指令

3.location優(yōu)先級是怎么排列的?

匹配某個具體文件

(location = 完整路徑) > (location ^~ 完整路徑) > (location ~* 完整路徑) > (location ~ 完整路徑)> (location /)

用目錄做匹配訪問某個文件

(location = 目錄) > (location ^~ 目錄) > (location ~ 目錄) > (location ~* 目錄)> (location /)

4.文件、目錄為什么只會在區(qū)不區(qū)分大小寫上會有變動

正則表達式:目的是為了盡量精確的匹配

文件——>盡量精確匹配,區(qū)分大小寫 精確,不區(qū)分更為精確

目錄——>盡量精確匹配,區(qū)分大小寫 更為精確,優(yōu)先級更高

到此這篇關(guān)于Nginx中l(wèi)ocation匹配以及rewrite重寫跳轉(zhuǎn)的文章就介紹到這了,更多相關(guān)Nginx location匹配及rewrite重寫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • nginx配置支持php的pathinfo模式配置方法

    nginx配置支持php的pathinfo模式配置方法

    這篇文章主要介紹了nginx配置支持php的pathinfo模式配置方法,需要的朋友可以參考下
    2017-04-04
  • Nginx+keepalived雙機熱備技術(shù)實踐

    Nginx+keepalived雙機熱備技術(shù)實踐

    在互聯(lián)網(wǎng)的高可用性 服務(wù)中,單一的服務(wù)節(jié)點往往無法滿足業(yè)務(wù)對穩(wěn)定性和可用性的要求,雙機熱備是一種常見的高可用性解決方案,它通過兩臺服務(wù)器同時運行相同的服務(wù),本文將詳細介紹如何在 Nginx 環(huán)境中部署雙機熱備方案,需要的朋友可以參考下
    2025-01-01
  • Nginx配置Https免費證書訪問步驟

    Nginx配置Https免費證書訪問步驟

    這篇文章主要為大家介紹了Nginx配置Https免費證書訪問步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • nginx反向代理如何支持網(wǎng)址自動添加斜線

    nginx反向代理如何支持網(wǎng)址自動添加斜線

    這篇文章主要介紹了nginx反向代理如何支持網(wǎng)址自動添加斜線問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Nginx?跨域配置的具體實現(xiàn)

    Nginx?跨域配置的具體實現(xiàn)

    跨域資源共享是一種機制,本文主要介紹了Nginx?跨域配置的具體實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-09-09
  • CentOS 4.0安裝配置Nginx的方法

    CentOS 4.0安裝配置Nginx的方法

    這篇文章主要介紹了CentOS 4.0安裝配置Nginx的方法,需要的朋友可以參考下
    2014-11-11
  • 詳解Nginx輪詢算法底層實現(xiàn)的方法

    詳解Nginx輪詢算法底層實現(xiàn)的方法

    這篇文章主要介紹了詳解Nginx輪詢算法底層實現(xiàn)的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Nginx隱藏server頭信息的實現(xiàn)

    Nginx隱藏server頭信息的實現(xiàn)

    本文主要介紹了Nginx隱藏server頭信息的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • HTTP 499 狀態(tài)碼 nginx下 499錯誤的解決辦法

    HTTP 499 狀態(tài)碼 nginx下 499錯誤的解決辦法

    HTTP狀態(tài)碼出現(xiàn)499錯誤有多種情況,499錯誤是什么?Nginx 499錯誤的原因及解決方法,下面跟著腳本之家小編一起學(xué)習(xí)吧
    2016-06-06
  • Nginx實現(xiàn)靜態(tài)資源壓縮的方法詳解

    Nginx實現(xiàn)靜態(tài)資源壓縮的方法詳解

    靜態(tài)資源過大,下載耗時導(dǎo)致頁面打開慢,希望通過壓縮減小文件大小,提升下載速度,所以本文給大家介紹了Nginx實現(xiàn)靜態(tài)資源壓縮的方法,并通過代碼示例給大家介紹的非常詳細,需要的朋友可以參考下
    2024-02-02

最新評論

英吉沙县| 大名县| 靖边县| 新龙县| 林甸县| 兴安盟| 读书| 台安县| 九江市| 灌阳县| 乌鲁木齐市| 大同县| 文化| 息烽县| 乐业县| 延川县| 黄梅县| 平武县| 东港市| 堆龙德庆县| 岑溪市| 清丰县| 鄱阳县| 乌鲁木齐县| 普宁市| 辰溪县| 峨边| 五台县| 许昌市| 安新县| 文登市| 诸暨市| 和政县| 桂阳县| 温宿县| 丰顺县| 博湖县| 东乌珠穆沁旗| 张家港市| 湖口县| 沙坪坝区|