亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

目錄
  • 前言
  • 一、rewrite跳轉實現
  • 二、rewrite執行順序
  • 三、rewrite跳轉場景
  • 四、語法與flg標記說明
  • 五、Nginx常用的正則表達式符號 
  • 六、location
    • 1.分類
    • 2.常用匹配規則
    • 3.優先級
    •  4.示例
    • 5.匹配規則定義
  • 總結:

    前言

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

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

    一、rewrite跳轉實現

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

    跳轉:從一個location跳轉到另一個location,循環最多可以執行10次,超過后nginx將返回500錯誤

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

    重寫模塊set指令:創建新的變量并為其賦值

    二、rewrite執行順序

    ①執行server快里面的rewriter指令

    ②執行location匹配

    ③執行選定的location中的rewrite指令

    三、rewrite跳轉場景

    調整用戶瀏覽的URL,看起來更規范,合乎開發及產品人員的需求

    為了讓搜索引擎搜錄網站內容及用戶體驗更好,企業會將動態URL地址偽裝成靜態地址提供服務

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

    服務端某些業務調整,比如根據特殊變量、目錄、客戶端的信息進行URL調整等

    四、語法與flg標記說明

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

    regex:表示正則匹配規則

    replacement:表示跳轉后的內容

    flag:表示 rewrite 支持的 flag 標記

    flag標記說明:

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

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

    Nginx中location匹配以及rewrite重寫跳轉詳解

    六、location

    1.分類

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

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

    2.常用匹配規則

    Nginx中location匹配以及rewrite重寫跳轉詳解

    3.優先級

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

     4.示例

     localtion = / {}

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

    location / {}

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

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

    location /documents/ {}

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

    location /documents/abc {}

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

    只有其他 location 后面的正則表達式沒有匹配到時,才會采用這一條

    location ^~ /images/ {}

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

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

    匹配所有以 gif、jpg、jpeg 為結尾的請求

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

    location /images/abc {}

    最長字符匹配到 /images/abc,優先級最低,繼續往下搜索其它 location,會發現 ^~ 和 ~ 存在

    location ~ /images/abc {}

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

    location /images/abc/1.html {}

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

    優先級總結:

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

    5.匹配規則定義

    ①第一個必選規則:

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

    可以是一個靜態首頁,也可以直接轉發給后端“應用服務器”——>PHP、Apache(應用服務器如下圖所示)

     

    Nginx中location匹配以及rewrite重寫跳轉詳解

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

    ②第二個必選規則:

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

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

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

    ③第三個必選規則:

    就是通用規則,比如用來轉發帶.php、.jsp后綴的動態請求到后端應用服務器

    非靜態文件請求就默認是動態請求(跳轉/反向代理)

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

    總結:

    1.比較rewrite和location

    相同點:都實現跳轉

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

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

    2.rewrite會寫在location里,執行順序

    • 執行server塊里面的rewrite指令
    • 執行location匹配
    • 執行選定的location中的rewrite指令

    3.location優先級是怎么排列的?

    匹配某個具體文件

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

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

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

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

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

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

    目錄——>盡量精確匹配,區分大小寫 更為精確,優先級更高

    分享到:
    標簽:匹配 服務器 詳解 跳轉 重寫
    用戶無頭像

    網友整理

    注冊時間:

    網站:5 個   小程序:0 個  文章:12 篇

    • 51998

      網站

    • 12

      小程序

    • 1030137

      文章

    • 747

      會員

    趕快注冊賬號,推廣您的網站吧!
    最新入駐小程序

    數獨大挑戰2018-06-03

    數獨一種數學游戲,玩家需要根據9

    答題星2018-06-03

    您可以通過答題星輕松地創建試卷

    全階人生考試2018-06-03

    各種考試題,題庫,初中,高中,大學四六

    運動步數有氧達人2018-06-03

    記錄運動步數,積累氧氣值。還可偷

    每日養生app2018-06-03

    每日養生,天天健康

    體育訓練成績評定2018-06-03

    通用課目體育訓練成績評定