12. Nginx进阶-Location

简介

Nginx的三大区块

在Nginx中主要配置包括三个区块,结构如下:

http {												#协议级别include       /etc/nginx/mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;keepalive_timeout  65;server {									 #服务器级别listen 80;server_name wang.mingqu.com;charset utf-8;location / {							#请求级别root /www/html/web/;index index.html index.htm;}}
}

什么是location?

location是配置在Server模块中的请求级别配置。
location可以根据不同的URI使用不同的配置来处理不同的请求。
location是有顺序的,会根据不同请求配置的优先级来匹配的location处理。

应用

基本语法

server {......location [=|~|~*|^~|@] pattern {......}
}

前缀匹配

符号的解释

符号解释
=表示精确匹配,优先级最高
^~表示URI以某个常规字符串开头的匹配,匹配URL的路径
~表示区分大小写的正则匹配
~*表示不区分大小写的正则匹配
!~表示区分大小写且不匹配的正则
!~*表示不区分大小写且不匹配的正则
/通用匹配符,匹配任意请求
@内部服务跳转

符号的优先级


注意:有多个location配置的情况下,依照优先级匹配;当匹配成功后,停止匹配。

应用举例

主配置文件
路径:/etc/nginx/nginx.conf

user  nginx;
worker_processes  auto;error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;#gzip  on;include /etc/nginx/conf.d/*.conf;
}

无修饰符

  1. Nginx配置

路径:/etc/nginx/conf.d/wangmingqu.conf

server {listen 80;server_name wang.mingqu.com;charset utf-8;location /web01/ {root /www/wangmingqu/html;index index.html index.htm;}
}
  1. 数据准备
mkdir /www/wangmingqu/html/web01 -p
echo "无修饰符" > /www/wangmingqu/html/web01/index.html
  1. 启动验证
nginx -t
systemctl restart nginx

image.png

=匹配

  1. Nginx配置

路径:/etc/nginx/conf.d/wangmingqu.conf

server {listen 80;server_name wang.mingqu.com;charset utf-8;location / {root /www/wangmingqu/html;index index.html index.htm;}location = / {root /www/wangmingqu/html;index index.html index.htm;}
}
  1. 数据准备
mkdir /www/wangmingqu/html/{web01,web} -p
echo "无修饰符" > /www/wangmingqu/html/web01/index.html
echo "精确匹配" > /www/wangmingqu/html/web/index.html
  1. 启动验证
nginx -t
systemctl restart nginx

image.png

^~匹配

  1. Nginx配置

路径:/etc/nginx/conf.d/wangmingqu.conf

server {listen 80;server_name wang.mingqu.com;charset utf-8;location ^~ /yewu/ {root /www/wangmingqu/html;index index.html index.htm;}
}
  1. 数据准备
mkdir -p /www/wangmingqu/html/yewu
echo "以yewu开头的匹配" > /www/wangmingqu/html/yewu/index.html
  1. 启动验证
nginx -t
systemctl restart nginx

image.png

~匹配

  1. Nginx配置

路径:/etc/nginx/conf.d/wangmingqu.conf

server {listen 80;server_name wang.mingqu.com;charset utf-8;location ~* \.jpeg$ { #区分大小写匹配的所有以.jpeg结尾的文件root /www/wangmingqu/html/images/;}
}
  1. 数据准备
mkdir -p /www/wangmingqu/html/images/
#上传.png和.PNG结尾的图片
ll /www/wangmingqu/html/images/
total 1360
-rw-r--r-- 1 root root 1166629 Mar  4 14:22 lower.jpeg
-rw-r--r-- 1 root root  222061 Mar  4 14:22 upper.JPEG
  1. 启动验证
nginx -t
systemctl restart nginx

后缀大写
image.png
后缀小写
image.png

~*匹配

  1. Nginx配置

路径:/etc/nginx/conf.d/wangmingqu.conf

server {listen 80;server_name wang.mingqu.com;charset utf-8;location ~ \.jpeg$ { #不区分大小写匹配的所有以.jpeg结尾的文件root /www/wangmingqu/html/images/;}
}
  1. 数据准备
mkdir -p /www/wangmingqu/html/images/
#上传.png和.PNG结尾的图片
ll /www/wangmingqu/html/images/
total 1360
-rw-r--r-- 1 root root 1166629 Mar  4 14:22 lower.jpeg
-rw-r--r-- 1 root root  222061 Mar  4 14:22 upper.JPEG
  1. 启动验证
nginx -t
systemctl restart nginx

后缀大写
image.png
后缀小写
image.png

/匹配

  1. Nginx配置

路径:/etc/nginx/conf.d/wangmingqu.conf

server {listen 80;server_name wang.mingqu.com;charset utf-8;location / {root /www/wangmingqu/html/;index index.html index.htm;}
}
  1. 数据准备
mkdir -p /www/wangmingqu/html/
echo "通用匹配符" > /www/wangmingqu/html/index.html
  1. 启动验证
nginx -t
systemctl restart nginx

image.png

@匹配

@符号,用于定义一个location块,且该location块不能被外部client访问,只能被Nginx内部配置的指令访问,如try_files、error_page。

  1. try_files举例:
server {listen       80;server_name  wang.mingqu.com;charset utf-8;location / {root   /usr/share/nginx/html;index  index.html index.htm;try_files $uri $uri/ @router;}location @router{rewrite ^(.+)$ /index.html last;}
}
  1. error_page举例:
server {listen 80;server_name wang.mingqu.com;charset urf-8;location / {error_page 418 = @queryone;error_page 419 = @querytwo;error_page 420 = @querythree;if ( $args ~ "service=one" ) { return 418; }if ( $args ~ "service=two" ) { return 419; }}location @queryone {return 200 'do stuff for one';}location @querytwo {return 200 'do stuff for two';}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/509673.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javascript中对包含关系判断介绍

本文将为您详细讲解 JavaScript 中对包含关系的判断,包括数组、字符串等,并提供相应的代码例子。 1. 数组包含关系判断 在 JavaScript 中,数组包含关系判断通常使用 Array.prototype.includes() 方法。这个方法返回一个布尔值,表示…

辽宁博学优晨教育视频:引领安全可靠的学习新风尚

在数字化时代,随着信息技术的飞速发展,线上教育已成为越来越多人提升自我、拓宽视野的重要选择。辽宁博学优晨教育视频凭借其安全可靠的特质,在众多在线教育平台中脱颖而出,成为广大学子信赖的学习伙伴。 一、辽宁博学优晨教育视频…

Docker创建Reids容器

1.默认拉取Redis最新镜像版本 docker pull redis 2.下载redis配置文件 https://download.redis.io/releases/ 3.下载配置文件后手动更改密码,链接时间等信息 绑定地址(bind):默认情况下,Redis 只会监听 localhost…

【MySQL 系列】在 Windows 上安装 MySQL

在 Windows 平台上安装 MySQL 很简单,并不需要太复杂的步骤。按照本文的步骤操练起来就可以了。 文章目录 1、下载 MySQL 安装程序2、安装 MySQL 数据库2.1、选择安装类型2.2、检查所需组件2.3、安装所选产品组件2.4、产品配置2.5、配置高可用性2.6、配置服务器类型…

【Boost搜索引擎项目】Day1 项目介绍+去标签和数据清洗框架搭建

🌈欢迎来到C项目专栏 🙋🏾‍♀️作者介绍:前PLA队员 目前是一名普通本科大三的软件工程专业学生 🌏IP坐标:湖北武汉 🍉 目前技术栈:C/C、Linux系统编程、计算机网络、数据结构、Mysq…

华容道问题求解第一部分_详细设计(一)之棋子和游戏类_初始化部分

按:因为自控力和能力的原因,这个其实是在和代码同时进行的。 主要 类 说明 这一层是整个项目的基础,将对未来的算法的效率产生重要影响。为了和界面隔离,以及自身逻辑的清晰,下面的两个类是必须的,棋子类…

MySQL篇—执行计划之覆盖索引Using index和条件过滤Using where介绍(第三篇,总共三篇)

☘️博主介绍☘️: ✨又是一天没白过,我是奈斯,DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux,也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章,并且也会默默的点赞收藏加关注❣…

文献速递:帕金森的疾病分享--使用功能性磁共振成像和机器学习预测帕金森病深部脑刺激的最优参数

文献速递:帕金森的疾病分享–使用功能性磁共振成像和机器学习预测帕金森病深部脑刺激的最优参数 Title 题目 Predicting optimal deep brain stimulation parameters for Parkinson’s disease using functional MRI and machine learning 使用功能性磁共振成像…

亚马逊、沃尔玛测评、采购、退款必备技巧:如何防关联,保护账号安全

今天,我将向各位深入介绍在亚马逊、沃尔玛等平台进行测评、采购、退款等操作时,如何运用防关联、防封号的技术手段来确保账号安全。这些底层技术原理对于大多数人来说可能较为陌生,涉及一些高难度的IT技术。通过了解这些技术,我们…

LabVIEW高精度天线自动测试系统

LabVIEW高精度天线自动测试系统 系统是一个集成了LabVIEW软件的自动化天线测试平台,提高天线性能测试的精度与效率。系统通过远程控制测试仪表,实现了数据采集、方向图绘制、参数计算等功能,特别适用于对天线辐射特性的精确测量。 在天线的…

【C++练级之路】【Lv.10】【STL】priority_queue类和反向迭代器的模拟实现

快乐的流畅:个人主页 个人专栏:《C语言》《数据结构世界》《进击的C》 远方有一堆篝火,在为久候之人燃烧! 文章目录 一、仿函数1.1 仿函数的介绍1.2 仿函数的优势 二、priority_queue2.1 push2.2 pop2.3 top2.4 size2.5 empty 三、…

【JavaEE进阶】使用云服务器实现Linux环境搭建

文章目录 🍃前言🌲Linux背景知识🚩Linux 是什么?🚩Linux发行版🚩Linux的优势 🎄Linux环境搭建🚩环境的搭建方式🚩使用云服务器 🎋使用终端软件连接到Linux&am…