IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 系统学习nginx(第八天)location篇 -> 正文阅读

[系统运维]系统学习nginx(第八天)location篇

引言

	location是用来设定不同的URI的文件系统路径的映射,一个server中可以包含多个location,nginx会根据用户请求的URI来卓哥判断location,找出最佳的匹配规则,然后使用location定义的配置。

URL与URI

URL=https://www.baidu.com/s?cl=3&tn
URI=/s
?后面是查询,不算在URI里
也就是说,URL是从浏览器复制下来的整个连接,URI是域名后面从/开始的链接。

URL换算nginx配置

https=端口
www.baidu.com=server_name
/s=location(localtion是匹配URI的!!!!!!!!!!/也算URI!!!!!!!!)

匹配符号

符号说明
=绝对匹配也称精确匹配,优先级最高,如果匹配成功,将停止向下匹配,立即处理请求
~区分大小写的正则匹配
~*不区分大小写的正则匹配
^~匹配uri前缀,如果匹配到了uri前缀则结束匹配
/托底匹配,其他匹配没有匹配到时启动该匹配

匹配顺序规则

=	大于	^~	大于	~	等于	~*	大于 	不带字符

演示匹配顺序

server {
        listen 81;
        root            /usr/local/nginx/html/;
        location = /image {
                return 100;

        }
        location ^~ /image {
                return 200;
        }
        location ~ /image {
                return 300;
        }
        location ~* /image {
                return 400;
        }
        location   /images {
                return 500;
        }
        location   / {
                return 600;
}
}

首先匹配的是“=”,这也是绝对匹配。

curl -I localhost:81/image
HTTP/1.1 100 
Server: nginx/1.20.1
Date: Fri, 10 Dec 2021 15:11:24 GMT
Content-Type: application/octet-stream
Content-Length: 0
Connection: keep-alive

这里在URI后面加上了个a,匹配到了^~

curl -I localhost:81/imagea
HTTP/1.1 200 OK
Server: nginx/1.20.1
Date: Fri, 10 Dec 2021 15:12:15 GMT
Content-Type: application/octet-stream
Content-Length: 0
Connection: keep-alive

使用了大写的URI,匹配到了~*

curl -I localhost:81/IMAGE
HTTP/1.1 400 Bad Request
Server: nginx/1.20.1
Date: Fri, 10 Dec 2021 15:13:30 GMT
Content-Type: text/html
Content-Length: 157
Connection: close

——————————————————————————分隔符————————————————————————
URI为images,按照书写应该是会回显500的,但是却回显了300,这里着重说下。
首先,按照匹配顺序来说应该会匹配到^~,回显200,但是,第一次匹配会根据URI长度来匹配,也就是匹配到了“空格”匹配,此时把 ^~的匹配干掉了,再次进行顺序的匹配,这时的优先级最高的是 ~呢,结束匹配,回显300,为什么没有匹配到 ~*,因为 ~在上面。
这里说的不太好,因为牵扯到正则跟字符串的问题,但是思路是这么个思路。

curl -I localhost:81/images
HTTP/1.1 300 
Server: nginx/1.20.1
Date: Fri, 10 Dec 2021 15:18:31 GMT
Content-Type: application/octet-stream
Content-Length: 0
Connection: keep-alive

托底匹配,也就是URI中没匹配到的将启用该配置

curl -I localhost:81/asdad
HTTP/1.1 600 
Server: nginx/1.20.1
Date: Fri, 10 Dec 2021 15:23:48 GMT
Content-Length: 0
Connection: keep-alive
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-12-11 16:07:48  更:2021-12-11 16:08:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 4:39:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码