Nginx—核心配置location匹配规则说明

简介: Nginx配置对于运维工程师来说是极其重要的,而其中最关键的是理解好location配置的匹配规则

location介绍
location指令是Nginx中最核心的一项配置,根据预先定义的URL匹配规则来接收用户发送的请求,根据匹配结果,将请求转发到后台服务器、非法的请求直接拒绝并返回403,404,500错误处理等。

location指令语法
location [=|~|~*|^~|@] /uri/ { … } 或 location @name { … }

location的URI匹配模式
location指令分为两种匹配模式:
1. 普通字符串匹配:“=”,“^~ ”和“@ ” 和无任何前缀的属于普通location,其中 “ ^~ ”的意思是“非正则,不需要继续正则匹配”。
2. 正则匹配:以~或~*开头表示正则匹配,~*表示正则不区分大小写。

匹配规则
①精确匹配 =
②前缀匹配 ^~
③按文件中顺序的正则匹配
④匹配不带任何修饰的前缀匹配。
⑤交给 / 通用匹配
当有匹配成功时候,停止匹配,按当前匹配规则处理请求

匹配实例
location = / {
echo “规则A”;
}
location = /login {
echo “规则B”;
}
location ^~ /static/ {
echo “规则C”;
}
location ^~ /static/files {
echo “规则X”;
}
location ~ \.(gif|jpg|png|js|css)$ {
echo “规则D”;
}
location ~* \.png$ {
echo “规则E”;
}
location /img {
echo “规则Y”;
}
location / {
echo “规则F”;
}

那么产生的效果如下:
访问根目录/,比如http://localhost/将匹配规则A。
访问http://localhost/login将匹配规则B,http://localhost/register则匹配规则F。
访问http://localhost/static/a.html将匹配规则C。
访问http://localhost/static/files/a.exe将匹配规则X,虽然规则C也能匹配到,但因为最大匹配原则,最终选中了规则X。可以测试下,去掉规则X,则当前URL会匹配上规则C。
访问http://localhost/a.gif,http://localhost/b.jpg将匹配规则D和规则E,但是规则D顺序优先,规则E不起作用,而http://localhost/static/c.png则优先匹配到规则C。
访问http://localhost/a.PNG则匹配规则E,而不会匹配规则D,因为规则E不区分大小写。
访问http://localhost/img/a.gif会匹配上规则D,虽然规则Y也可以匹配上,但是因为正则匹配优先,而忽略了规则Y。
访问http://localhost/img/a.tiff会匹配上规则Y。
访问http://localhost/category/id/1111则最终匹配到规则F,因为以上规则都不匹配,这个时候应该是Nginx转发请求给后端应用服务器,比如 FastCGI(php),tomcat(jsp),Nginx 作为反向代理服务器存在。

SO实际应用就有三种常见的情况,如下:
# 直接匹配网站根,通过域名访问网站首页比较频繁,使用这个会加速处理,第一个必选规则
location = / {
proxy_pass http://tomcat:8080/index
}

# 第二个必选规则是处理静态文件请求,这是 nginx作为http服务器的强项,有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用(动静分离的原理步骤)
location ^~ /static/ {
root /webroot/static/;
}
location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
root /webroot/res/;
}

# 第三个规则就是通用规则,用来转发动态请求到后端应用服务器
location / {
proxy_pass http://tomcat:8080/
}

location的原理图

05e06a861b5e1dd0d487b7b7c31f9ccf2f1aa863

相关文章
|
5天前
|
缓存 负载均衡 安全
Nginx常用基本配置总结:从入门到实战的全方位指南
Nginx常用基本配置总结:从入门到实战的全方位指南
108 0
|
4天前
|
前端开发 JavaScript 应用服务中间件
终极 Nginx 配置指南
本文介绍了Nginx的基本配置及其优化方法。首先,通过删除注释简化了Nginx的默认配置文件,使其更易于理解。接着,文章将Nginx配置文件分为全局块、events块和http块三部分进行详细解释。此外,还提供了如何快速上线网站、解决前端history模式404问题、配置反向代理、开启gzip压缩、设置维护页面、在同一IP上部署多个网站以及实现动静分离的具体配置示例。最后,附上了Nginx的基础命令,包括安装、启动、重启和关闭等操作。
|
6天前
|
缓存 前端开发 JavaScript
一、nginx配置
一、nginx配置
51 1
|
5天前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
35 0
|
7天前
|
缓存 监控 负载均衡
nginx相关配置及高并发优化
Nginx的高并发优化是一个综合性的过程,需要根据具体的业务场景和硬件资源量身定制。以上配置只是基础,实际应用中还需根据服务器监控数据进行持续调整和优化。例如,利用工具如ab(Apache Benchmarks)进行压力测试,监控CPU、内存、网络和磁盘I/O等资源使用情况,确保配置的有效性和服务的稳定性。
48 0
|
缓存 负载均衡 算法
Nginx 简单配置说明
Nginx 简单配置说明
224 0
Nginx 简单配置说明
|
9天前
|
应用服务中间件 Linux nginx
Jetson 环境安装(四):jetson nano配置ffmpeg和nginx(亲测)之编译错误汇总
这篇文章是关于在Jetson Nano上配置FFmpeg和Nginx时遇到的编译错误及其解决方案的汇总。
46 4
|
10天前
|
编解码 Ubuntu 应用服务中间件
Jetson 环境安装(三):jetson nano配置ffmpeg和nginx(亲测)
本文介绍了在NVIDIA Jetson Nano上配置FFmpeg和Nginx的步骤,包括安装、配置和自启动设置。
69 1
Jetson 环境安装(三):jetson nano配置ffmpeg和nginx(亲测)
|
8天前
|
负载均衡 应用服务中间件 nginx
Nginx的6大负载均衡策略及权重轮询手写配置
【10月更文挑战第9天】 Nginx是一款高性能的HTTP服务器和反向代理服务器,它在处理大量并发请求时表现出色。Nginx的负载均衡功能可以将请求分发到多个服务器,提高网站的吞吐量和可靠性。以下是Nginx支持的6大负载均衡策略:
30 7
|
10天前
|
缓存 前端开发 应用服务中间件
CORS跨域+Nginx配置、Apache配置
CORS跨域+Nginx配置、Apache配置
46 7