網(wǎng)站首頁 編程語言 正文
location 介紹 location是Nginx中的塊級(jí)指令(block directive),,location指令的功能是用來匹配不同的url請(qǐng)求,進(jìn)而對(duì)請(qǐng)求做不同的處理和響應(yīng),這其中較難理解的是多個(gè)location的匹配順序,本文會(huì)作為重點(diǎn)來解釋和說明。 開始之前先明確一些約定,我們輸入的網(wǎng)址叫做請(qǐng)求URI,nginx用請(qǐng)求URI與location中配置的URI做匹配。
Nginx的HTTP配置主要包括三個(gè)區(qū)塊,結(jié)構(gòu)如下: http { //這個(gè)是協(xié)議級(jí)別 include mime.types; default_type application/octet-stream; keepalive_timeout 65; gzip on; server { //這個(gè)是服務(wù)器級(jí)別 listen 80; server_name localhost; location / { //這個(gè)是請(qǐng)求級(jí)別 root html; index index.html index.htm; } } }
location區(qū)段
通過指定模式來與客戶端請(qǐng)求的URI相匹配,基本語法如下:location [=|~|~*|^~|@] pattern{……}
1、沒有修飾符 表示:必須以指定模式開始,如:
server { server_name baidu.com; location /abc { …… } } 那么,如下是對(duì)的:http://baidu.com/abchttp://baidu.com/abc?p1http://baidu.com/abc/http://baidu.com/abcde
那么,如下是對(duì)的:
http://baidu.com/abc
http://baidu.com/abc?p1
http://baidu.com/abc/
http://baidu.com/abcde
2、=表示:必須與指定的模式精確匹配
server { server_name sish location = /abc { …… } } 那么,如下是對(duì)的: http://baidu.com/abc http://baidu.com/abc?p1 如下是錯(cuò)的: http://baidu.com/abc/ http://baidu.com/abcde
3、~ 表示:指定的正則表達(dá)式要區(qū)分大小寫
server { server_name baidu.com; location ~ ^/abc$ { …… } } 那么,如下是對(duì)的: http://baidu.com/abc http://baidu.com/abc?p1=11&p2=22 如下是錯(cuò)的: http://baidu.com/ABC http://baidu.com/abc/ http://baidu.com/abcde
4、~* 表示:指定的正則表達(dá)式不區(qū)分大小寫
server { server_name baidu.com; location ~* ^/abc$ { …… } } 那么,如下是對(duì)的: http://baidu.com/abc http://baidu..com/ABC http://baidu..com/abc?p1=11&p2=22 如下是錯(cuò)的: http://baidu..com/abc/ http://baidu..com/abcde
5、^~ 類似于無修飾符的行為,也是以指定模式開始,不同的是,如果模式匹配,
那么就停止搜索其他模式了。
6、@ :定義命名location區(qū)段,這些區(qū)段客戶段不能訪問,只可以由內(nèi)部產(chǎn)生的請(qǐng)
求來訪問,如try_files或error_page等
查找順序和優(yōu)先級(jí)
1:帶有“=“的精確匹配優(yōu)先
2:沒有修飾符的精確匹配
3:正則表達(dá)式按照他們?cè)谂渲梦募卸x的順序
4:帶有“^~”修飾符的,開頭匹配
5:帶有“~” 或“~*” 修飾符的,如果正則表達(dá)式與URI匹配
6:沒有修飾符的,如果指定字符串與URI開頭匹配
Location區(qū)段匹配示例location = / { # 只匹配 / 的查詢. [ configuration A ] } location / { # 匹配任何以 / 開始的查詢,但是正則表達(dá)式與一些較長(zhǎng)的字符串將被首先匹配。 [ configuration B ] } location ^~ /images/ { # 匹配任何以 /images/ 開始的查詢并且停止搜索,不檢查正則表達(dá)式。 [ configuration C ] } location ~* \.(gif|jpg|jpeg)$ { # 匹配任何以gif, jpg, or jpeg結(jié)尾的文件,但是所有 /images/ 目錄的請(qǐng)求將在Configuration C中處 理。 [ configuration D ] } 各 請(qǐng)求的處理如下例: ■/ → configuration A ■/documents/document.html → configuration B ■/images/1.gif → configuration C ■/documents/1.jpg → configuration D
root 、alias指令區(qū)別
location /img/ { alias /var/www/image/; }
#若按照上述配置的話,則訪問/img/目錄里面的文件時(shí),ningx會(huì)自動(dòng)去/var/www/image/目錄找文件
location /img/ { root /var/www/image; }
alias是一個(gè)目錄別名的定義,root則是最上層目錄的定義。
還有一個(gè)重要的區(qū)別是alias后面必須要用“/”結(jié)束,否則會(huì)找不到文件的。。。而root則可有可無~~
原文鏈接:https://www.cnblogs.com/xiaoliangup/p/9175932.html
相關(guān)推薦
- 2023-11-17 如何使python中線程等待其他線程完了再執(zhí)行;python-threading中的join方法;p
- 2022-10-09 ASP.NET?Core?5.0中的Host.CreateDefaultBuilder執(zhí)行過程解析_
- 2022-08-14 Python數(shù)據(jù)處理之pd.Series()函數(shù)的基本使用_python
- 2022-10-16 QT實(shí)現(xiàn)簡(jiǎn)單TCP通信_(tái)C 語言
- 2022-06-16 Linux中Redis安裝部署的操作步驟_Redis
- 2023-03-16 Android?OpenCV基礎(chǔ)API清晰度亮度識(shí)別檢測(cè)_Android
- 2022-06-29 Python利用pynput實(shí)現(xiàn)劃詞復(fù)制功能_python
- 2022-04-09 Linux(CentOS7)后臺(tái)運(yùn)行程序關(guān)掉窗口不被殺掉
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支