Nginx跳轉模塊location

一.location模塊概述

1.定義

location塊是server塊的一個指令。作用:基于Nginx服務器接收到的請求字符串,虛擬主機名稱(ip,域名)、url匹配,對特定請求進行處理。

2.三種匹配類別

精準匹配:location = / {}

一般匹配:location / {}

正則匹配:location ~ / {}

匹配符表示含義
^匹配輸入字符串的起始位置
$匹配輸入字符串的結束位置
*匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll”
+匹配前面的字符一次或多次。如“ol+”能匹配“ol”及“oll”、“olll”,但不能匹配“o”
?匹配前面的字符零次或一次,例如“do(es)?”能匹配“do”或者“does”,”?”等效于”{0,1}”
.表示任意一個字符
\轉義字符用于取消特殊符號的含義
\d匹配純數字
\s匹配空的(空格或者制表符)
{n}匹配前面的子表達式n次
{n,}匹配前面的子表達式不少于n次
{n,m}匹配前面的子表達式n到m次
[ ]匹配括號中的一個字符
[c]匹配單個字符 c
[a-z]匹配 a-z 小寫字母的任意一個
[a-zA-Z0-9]匹配所有大小寫字母或數字
()表達式的開始和結束位置
|或運算符

3.常用的匹配規則

規則表達式規則含義
=進行普通字符精確匹配。也就是完全匹配
^~表示普通字符匹配。使用前綴匹配。如果匹配成功,則不再匹配其他 location
~表示執行一個正則匹配,區分大小寫
~*表示執行一個正則匹配,不區分大小寫
!~表示執行一個正則匹配,區分大小寫不匹配
!~*表示執行一個正則匹配,不區分大小寫不匹配

4.匹配優先級

首先精確匹配 =

其次前綴匹配 ^~

其次是按文件中順序的正則匹配 ~或~*

然后匹配不帶任何修飾的前綴匹配

最后是交給 / 通用匹配

(1)location = / {}
=為精確匹配 / ,主機名后面不能帶任何字符串,比如訪問 / 和 /data,則 / 匹配,/data 不匹配
再比如 location = /abc,則只匹配/abc ,/abc/或 /abcd不匹配。若 location  /abc,則即匹配/abc 、/abcd/ 同時也匹配 /abc/。(2)location / {}
因為所有的地址都以 / 開頭,所以這條規則將匹配到所有請求 比如訪問 / 和 /data, 則 / 匹配, /data 也匹配,
但若后面是正則表達式會和最長字符串優先匹配(最長匹配)(3)location /documents/ {}
匹配任何以 /documents/ 開頭的地址,匹配符合以后,還要繼續往下搜索其它 location
只有其它 location后面的正則表達式沒有匹配到時,才會采用這一條(4)location /documents/abc {}
匹配任何以 /documents/abc 開頭的地址,匹配符合以后,還要繼續往下搜索其它 location
只有其它 location后面的正則表達式沒有匹配到時,才會采用這一條(5)location ^~ /images/ {}
匹配任何以 /images/ 開頭的地址,匹配符合以后,停止往下搜索正則,采用這一條(6)location ~* \.(gif|jpg|jpeg)$ {}
匹配所有以 gif、jpg或jpeg 結尾的請求
然而,所有請求 /images/ 下的圖片會被 location ^~ /images/ 處理,因為 ^~ 的優先級更高,所以到達不了這一條正則(7)location /images/abc {}
最長字符匹配到 /images/abc,優先級最低,繼續往下搜索其它 location(8)location ~ /images/abc {}
匹配以/images/abc 開頭的,優先級次之,只有去掉 location ^~ /images/ 才會采用這一條(9)location /images/abc/1.html {}
匹配/images/abc/1.html 文件,如果和正則location ~ /images/abc/1.html 相比,正則優先級更高

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

location 匹配
首先看 優先級:精確= > 前綴^~ > 正則~,~* > 一般 > 通用/
優先級相同:正則看上下順序,上面的優先;一般匹配看長度,最長匹配的優先
精確、前綴、正則、一般 都沒有匹配到,最后再看通用匹配

三.location模塊使用實例

1.精確匹配優先級小于一般匹配情況

location = / {} 和 location / {} ,按道理應匹配前者,但實際確實匹配后者,匹配只寫域名精確匹配不生效

1. #在配置文件添加匹規則
vim  /usr/local/nginx/conf/nginx.conf#默認網頁location / {root   html;index  index.html index.htm;        }#添加的網頁location = / {     root   /web/test/;}2. #新建網頁站點目錄
mkdir -p /web/test3. #在站點目錄下新建index.html
vim /web/test/index.htmlThis is a test!4. #檢查語法并重啟
nginx -t
systemctl restart nginx.service 5. #在網頁中測試
192.168.79.210

2.解決方法

在/根后加上index.html后生效

1. #修改配置文件
vim  /usr/local/nginx/conf/nginx.conflocation = /index.html {            # 加上index.html root   /web/dog/;}2. #檢查語法、重啟服務
nginx -t
systemctl restart nginx.service 3. #網頁測試
192.168.79.210

3.實際網站使用中的三個匹配規則

(1)第一個必選規則

直接匹配網站根,通過域名訪問網站首頁比較頻繁,使用這個會加速處理,比如說官網。
這里是直接轉發給后端應用服務器了,也可以是一個靜態首頁

location = / {proxy_pass http://tomcat_server/;
}
(2)第二個必須規則是處理靜態文件請求

這是nginx作為http服務器的強項!
有兩種配置模式,目錄匹配或后綴匹配,任選其一或搭配使用

location ^~ /static/ {root /webroot/static/;
}location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {root /webroot/res/;
}
(3)第三個通用規則

比如用來轉發帶.php、.jsp后綴的動態請求到后端應用服務器
非靜態文件請求就默認是動態請求

location / {proxy_pass http://tomcat_server;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/697405.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/697405.shtml
英文地址,請注明出處:http://en.pswp.cn/news/697405.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

企業微信變更企業主體的流程

企業微信變更主體有什么作用?做過企業運營的小伙伴都知道,很多時候經常會遇到現有的企業需要注銷,切換成新的企業進行經營的情況,但是原來企業申請的企業微信上面卻積累了很多客戶,肯定不能直接丟棄,所以這…

【Flink數據傳輸(一)】NetworkStack架構概述:實現tm之間的數據交換

文章目錄 1. NetworkStack整體架構2. StreamTask內數據流轉過程 NetworkStack提供了高效的網絡I/O和反壓控制 除了各個組件之間進行RPC通信之外,在Flink集群中TaskManager和TaskManager節點之間也會發生數據交換,尤其當用戶提交的作業涉及Task實例運行在…

ubuntu20.04中配置Pyrep和CoppeliaSim

ubuntu20.04中配置Pyrep和CoppeliaSim 在Ubuntu20.04中配置 Pyrep ,實現應用Python語言的機器人在 Vrep(CoppeliaSim)中的虛擬仿真 一、安裝CoppeliaSim 4.1 1.1 下載適配Ubuntu20.04的CoppeliaSim 4.1軟件 下載鏈接:https://…

5.iframe

iframe 經典真題 iframe 框架有哪些優缺點&#xff1f;iframe 用來干什么的 iframe 介紹 iframe 稱之為嵌入式框架&#xff0c;嵌入式框架可以把一個完整的網頁內容嵌入到現有的網頁中。 下面是一個 iframe 的簡單示例&#xff1a; <body><p>iframe 示例<…

ssm+springmvc基于springboot的寵物領養系統的設計與實現_j5fk4

寵物領養系統主要是為了提高管理員的工作效率&#xff0c;滿足管理員對更方便、更快、更好地存儲所有信息和數據檢索功能的要求。通過對多個類似網站的合理分析&#xff0c;確定了寵物領養系統的各個模塊。考慮到用戶的可操作性&#xff0c;經過深入調查研究&#xff0c;遵循系…

vue3中mockjs模擬獲取數據

開發項目的時候&#xff0c;如果后端接口沒有出來&#xff0c;前端工程師也不必非得等接口出來才進行下步開發。可以使用mock.js來模擬接口數據&#xff0c;以下就是使用vue3設置hook函數來封裝axios請求&#xff0c;配合mock.js來實現的代碼&#xff0c;mock的官網 Mock.js 一…

力扣算法Algorithm競賽模板庫(codeforces-go):含了算法競賽中常用的數據結構和算法實現,助力開發者更高效地解決問題

1.算法Algorithm競賽模板庫&#xff08;codeforces-go&#xff09; 算法競賽模板庫&#xff0c;為算法競賽愛好者提供了一系列精心設計的算法模板。這個庫包含了算法競賽中常用的數據結構和算法實現&#xff0c;助力開發者更高效地解決問題 一個算法模板應當涵蓋以下幾點&…

C語言------字符串函數(2)

1.strcat函數功能實現 ? char* mystrcat(char* dest, const char* src) {assert(dest);assert(src);char* ret dest;//找到目標空間里面的斜杠0的位置&#xff0c;再追加while (*dest ! \0){dest;}while ((*dest *src)){;}return ret; } int main() {char arr1[20] "…

【信息系統項目管理師】--【信息技術發展】--【現代化創新發展】--【物聯網】

文章目錄 第二章 信息技術發展2.2 新一代信息技術及應用2.2.1 物聯網1.技術基礎2.關鍵技術3.應用和發展 第二章 信息技術發展 信息技術是在信息科學的基本原理和方法下&#xff0c;獲取信息、處理信息、傳輸信息和使用信息的應用技術總稱。從信息技術的發展過程來看&#xff0c…

Android 圓環帶刻度條進度動畫效果實現

效果圖 需求是根據傳感器做一個重力球效果&#xff0c;先實現了動畫后續加上跟傳感器聯動. 又是擺爛的一天&#xff0c; 尚能呼吸&#xff0c;未來可期啊 View源碼 package com.android.circlescalebar.view;import android.content.Context; import android.content.res.Typ…

C++ //練習 7.58 下面的靜態數據成員的聲明和定義有錯誤嗎?請解釋原因。

C Primer&#xff08;第5版&#xff09; 練習 7.58 練習 7.58 下面的靜態數據成員的聲明和定義有錯誤嗎&#xff1f;請解釋原因。 //example.h class Example{public:static double rate 6.5;static const int vecSize 20;static vector<double> vec(vecSize); };//e…

【治愈系】心靈雞湯美文:溫暖你的每一寸心田

1.人生就像一杯茶&#xff0c;不會苦一輩子&#xff0c;但總會苦一陣子。只有經歷過苦澀&#xff0c;才能品味到甜美的滋味。 2.每一次失敗都是一次寶貴的經驗&#xff0c;它教會我們如何更好地面對困難和挑戰。不要害怕失敗&#xff0c;因為失敗是成功的前奏。 3.人生最重要的…

【Vue】本地使用 axios 調用第三方接口并處理跨域

前端處理跨域 一. 開發準備 開發工具&#xff1a;VScode框架&#xff1a;Vue2項目結構&#xff1a;vue腳手架生成的標準項目&#xff08;以下僅顯示主要部分&#xff09; 本地已搭建好的端口&#xff1a;8080要請求的第三方接口&#xff1a;http://1.11.1.111:端口號/xxx-api…

刪除文件中的注釋(C語言)

【題目描述】刪除文件中的注釋&#xff1a;將C語言源程序(hello.c)文件中的所有注釋去掉后存入另一個文件(new_hello.c)。試編寫相應程序。 【代碼】 #include <stdio.h> #include <stdlib.h> int main(void) {FILE *fp1, *fp2;if ((fp1fopen("hello.c"…

【Git工具實戰】實用真實 Git 開發工作流程

前言 最近工作中發現&#xff0c;很多開發人員連最基本的Git怎么使用都不知道&#xff0c;比如什么時候切分支&#xff0c;什么時候合并代碼&#xff0c;代碼遇到沖突怎么辦&#xff0c;經常出現掉代碼&#xff0c;代碼合并后丟失的情況。以下為個人總結的常規Git開發工作流程…

Java架構師之路五、微服務:微服務架構、服務注冊與發現、服務治理、服務監控、容器化等。

目錄 微服務架構&#xff1a; 服務注冊與發現&#xff1a; 服務治理&#xff1a; 服務監控&#xff1a; 容器化&#xff1a; 上篇&#xff1a;Java架構師之路四、分布式系統&#xff1a;分布式架構、分布式數據存儲、分布式事務、分布式鎖、分布式緩存、分布式消息中間件、…

C語言系列15——C語言的安全性與防御性編程

目錄 寫在開頭1 緩沖區溢出&#xff1a;如何防范與處理1.1 緩沖區溢出的原因1.2 預防與處理策略 2. 安全的字符串處理函數與使用技巧2.1 strncpy函數2.2 snprintf函數2.3 strlcpy函數2.4 使用技巧 3 防御性編程的基本原則與實際方法3.1 基本原則3.2 實際方法 寫在最后 寫在開頭…

思騰合力攜京東打造服務器采購解決方案,助企業高校提升算力

隨著云計算、大數據、人工智能的快速發展&#xff0c;服務器需求不斷擴大&#xff0c;市場規模持續保持增長。IDC數據顯示&#xff0c;預計2023年我國服務器市場規模將增至308億美元。基于對服務器市場的趨勢洞察&#xff0c;思騰合力攜手京東品牌持續深化合作&#xff0c;在保…

深入淺出JVM(六)之前端編譯過程與語法糖原理

本篇文章將圍繞Java中的編譯器&#xff0c;深入淺出的解析前端編譯的流程、泛型、條件編譯、增強for循環、可變長參數、lambda表達式等語法糖原理 編譯器與執行引擎 編譯器 Java中的編譯器不止一種&#xff0c;Java編譯器可以分為&#xff1a;前端編譯器、即時編譯器和提前編…

(提供數據集下載)基于大語言模型LangChain與ChatGLM3-6B本地知識庫調優:數據集優化、參數調整、Prompt提示詞優化實戰

文章目錄 &#xff08;提供數據集下載&#xff09;基于大語言模型LangChain與ChatGLM3-6B本地知識庫調優&#xff1a;數據集優化、參數調整、提示詞Prompt優化本地知識庫目標操作步驟問答測試的預設問題原始數據情況數據集優化&#xff1a;預處理&#xff0c;先后準備了三份數據…