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.mzph.cn/news/720519.shtml

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

相关文章

(十五)【Jmeter】取样器(Sampler)之HTTP请求

简述 操作路径如下: HTTP请求 (HTTP Sampler): 作用:模拟发送HTTP请求并获取响应。配置:设置URL、请求方法、请求参数等参数。使用场景:测试Web应用程序的HTTP接口性能。优点:支持多种HTTP方法和请求参数,适用于大多数Web应用程序测试。缺点:功能较为基础,对于复杂…

42、网络编程/多点通信和域套接字通信模型20240304

一、多点通信之广播的收发端实现 1.广播发送端代码&#xff1a; #include<myhead.h>int main(int argc, const char *argv[]) {int sfdsocket(AF_INET,SOCK_DGRAM,0);//创建套接字if(sfd-1){perror("socket,error");return -1;}int broadcast1;//设置套接字广…

opencv VideoCapture

videocapture顾名思义视频捕捉&#xff0c;主要是从视频文件、摄像头或网络摄像头获取视频流数据&#xff0c;并将其作为一系列帧进行处理。 我们这里主要实现了获取项目文件夹下的1.mp4视频文件&#xff0c;然后经过灰度变化、均值滤波、边缘检测然后将视频显示出来 #include…

ruoyi-vue-plus4.X版本实现内嵌swagger文档(简单解决方法)

1.在common模块中添加pom依赖 <dependency><groupId>org.webjars</groupId><artifactId>swagger-ui</artifactId><version>4.15.5</version></dependency>结果如下&#xff1a; 2.在ResourcesConfig配置类的addResourceHandl…

Git分支补充

我们在合并分支时并不总是一帆风顺&#xff0c;有些时候也会遇到“合并冲突”的问题。 下面我们来还原一下&#xff1a; 创建分支dev $ git checkout -b dev 切换到一个新分支 dev $ git branch * devmaster我们将 text.txt 内容改为 欢迎关注CSDNkeduo并将修改的内容提交到 d…

Linux-信号3_sigaction、volatile与SIGCHLD

文章目录 前言一、sigaction__sighandler_t sa_handler;__sigset_t sa_mask; 二、volatile关键字三、SIGCHLD方法一方法二 前言 本章内容主要对之前的内容做一些补充。 一、sigaction #include <signal.h> int sigaction(int signum, const struct sigaction *act,struc…

Prometheus结合Grafana监控MySQL,这篇不可不读!

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

动态规划:LeetCode第10题 正则表达式匹配

题目&#xff1a; 给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符* 匹配零个或多个前面的那一个元素 所谓匹配&#xff0c;是要涵盖 整个 字符串 s的&#xff0c;而不是部分字符串。 示例 1&#xff1a; …

软考57-上午题-【数据库】-数据库的控制功能

一、事务管理 1-1、事务的定义 事务是一个操作序列&#xff0c;这些操作&#xff0c;要么都做&#xff0c;要么都不做。 事务和程序是两个不同的概念&#xff0c;一般一个程序可以包含多个事务。 1-2、事务定义的语句 1、事务开始&#xff1a;BEGIN TRANSACTION 2、事务提…

【ES入门一:基础概念】

集群层面上的基础概念 集群 由多个es实例组成的叫做集群 节点 单个ES的服务实例叫做节点。每个实例都有自己的名字&#xff0c;就是在配置文件中配置的‘node.name’中的内容。为了标识每个节点&#xff0c;每个节点启动后都会分配一个UID&#xff0c;存储在data目录。每个…

线程的同步互斥机制3月4日

题目&#xff1a; 代码&#xff1a; #include <stdio.h> #include <pthread.h> #include <string.h> #include <semaphore.h> #include <unistd.h>sem_t sem1,sem2;void* callback1(void*arg) {while(1){if(sem_wait(&sem1)<0) //等待…

SwiftUI之CoreData详解(一)

coreData 是一种数据持久化的方案&#xff0c;是对SQLite的一种封装。一说到这种桌面化的数据库&#xff0c;我就无比的怀念Foxbase|Foxpro, 多好的数据库产品&#xff0c;被微软扼杀了&#xff0c;相当年教大学生妹子们国家二级数据库时都是手把手教的&#xff0c;呃~~~&#…

Java轻量延迟重试队列实现

背景 很多开放平台都使用Webhook的方式进行外部系统数据同步或者通知&#xff0c;对于Webhook请求的对外发送不进行重试显然有点说不过去。使用简单的while一个条件去重试N次好像达不到什么效果&#xff0c;只能是说有重试而已&#xff0c;而使用消息队列中间件好像依赖又太重…

【论文阅读】High-Resolution Image Synthesis with Latent Diffusion Model

High-Resolution Image Synthesis with Latent Diffusion Model 引用&#xff1a; Rombach R, Blattmann A, Lorenz D, et al. High-resolution image synthesis with latent diffusion models[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern re…

SkyWalking链路追踪上下文TraceContext的追踪身份traceId生成的实现原理剖析

结论先行 SkyWalking 通过字节码增强技术实现&#xff0c;结合依赖注入和控制反转思想&#xff0c;以SkyWalking方式将追踪身份traceId编织到链路追踪上下文TraceContext中。 是不是很有趣&#xff0c;很有意思&#xff01;&#xff01;&#xff01; 实现原理剖析 TraceConte…

1.1_2 性能指标——速率、带宽、吞吐量

文章目录 1.1_2 性能指标——速率、带宽、吞吐量&#xff08;一&#xff09;速率&#xff08;二&#xff09;带宽&#xff08;三&#xff09;吞吐量 1.1_2 性能指标——速率、带宽、吞吐量 &#xff08;一&#xff09;速率 速率即数据率或称数据传输率或比特率。 速率就是“快…

Redis的设计与实现

Redis的设计与实现 数据结构和内部编码 type命令实际返回的就是当前键的数据结构类型&#xff0c;它们分别是&#xff1a;string(字符串)hash(哈希)、list(列表)、set(集合)、zset (有序集合)&#xff0c;但这些只是Redis对外的数据结构。 实际上每种数据结构都有自己底层的…

Docker Protainer可视化平台,忘记登录密码,重置密码。

由于好久没有登录portainer系统&#xff0c;导致忘记了登录密码&#xff0c;试了好多常用的密码都不对&#xff0c;无奈只能重置密码。 一、停止protainer 容器 查看容器ID和COMMAND 用于停止容器 docker ps -a停止容器 docker stop portainer二、查找volume data 宿主机所在…

JavaEE之多线程

一.认识线程 1.多进程实现并发编程的不足之处&#xff1a; 引入多个进程的核心&#xff1a;实现并发编程&#xff08;c的CGI技术就是通过多进程的方式实现的网站后端开发&#xff09;。因为现在是一个多核cpu的时代&#xff0c;并发编程就是刚需。多进程实现并发编程&#xf…

达梦、金仓、南大、瀚高、优炫:从社区建设看企业技术自信心

正文约950字&#xff0c;预计阅读时间2分钟 国产技术厂商在面对自身产品问题时&#xff0c;往往保持回避态度&#xff0c;不愿公之于众&#xff0c;主要原因有2方面&#xff1a; 1&#xff0c;产品技术层面问题较多&#xff0c;如某些根本性缺陷难以攻克&#xff0c;或问题发…