Nginx Location命令学习笔记

location匹配命令

~      #波浪线表示执行一个正则匹配,区分大小写

~*    #表示执行一个正则匹配,不区分大小写

^~    #^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录

=      #进行普通字符精确匹配

location 优先级官方文档

1. Directives with the = prefix that match the query exactly. If found, searching stops.

2. All remaining directives with conventional strings, longest match first. If this match used

the ^~ prefix, searching stops.

3. Regular expressions, www.111cn.net in order of definition in the configuration file.

4. If #3 yielded a match, that result is used. Else the match from #2 is used.

例如

    location  = / {

        # 只匹配"/".

       [ configuration A ]

    }

    location  / {

        # 匹配任何请求,因为所有请求都是以"/"开始

        # 但是更长字符匹配或者正则表达式匹配会优先匹配

        [ configuration B ]

    }

    location ^~ /images/ {

        # 匹配任何以 /images/ 开始的请求,并停止匹配 其它location

        [ configuration C ]

    }

    location ~* .(gif|jpg|jpeg)$ {

        # 匹配以 gif, jpg, or jpeg结尾的请求.

        # 但是所有 /images/ 目录的请求将由 [Configuration C]处理. 

       [ configuration D ]

    }
 
 
注意:多个location配置的情况下匹配顺序为

1、首先匹配 =,其次匹配常规字符串, 其次是正则匹配。
2、精确匹配当有匹配成功的时候,停止匹配。
3、常规字符串匹配长度优先,越长优先级越高,其中以^~开头的匹配成功后不再进行正则匹配;/ 任何请求

都会匹配到;nginx 不对 url 做编码,因此请求为 /static/20%/aa,可以被规则 ^~ /static/ /aa 匹配到

(注意是空格)。
4、正则匹配当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

时间: 2024-09-20 15:44:59

Nginx Location命令学习笔记的相关文章

【官方文档】Nginx模块Nginx-Rtmp-Module学习笔记(一) RTMP 命令详解

源码地址:https://github.com/Tinywan/PHP_Experience 说明: rtmp的延迟主要取决于播放器设置,但流式传输软件,流的比特率和网络速度(以及响应时间"ping")可能会对延迟产生影响,具有播放器的本地rtmp服务器 使用"否"缓冲区(如0.1-0.2秒缓冲区等)可能会在0.8-1.2秒之间总是延迟,当事情正好工作时  nginx配置文件 rtmp { server { listen 1935; chunk_size 4096;

【精选】Nginx模块Lua-Nginx-Module学习笔记(一)Nginx Lua API 接口详解

源码地址:https://github.com/Tinywan/Lua-Nginx-Redis 一.介绍 各种* _by_lua,* _by_lua_block和* _by_lua_file配置指令用作nginx.conf文件中Lua API的网关. 下面描述的Nginx Lua API只能在这些配置指令的上下文中运行的用户Lua代码中调用.API以两个标准软件包ngx和ndk的形式暴露给Lua. 这些软件包位于ngx_lua中的默认全局范围内,并且始终可在ngx_lua指令中使用. 这些包可以

【精选】Nginx模块Lua-Nginx-Module学习笔记(二)Lua指令详解(Directives)

源码地址:https://github.com/Tinywan/Lua-Nginx-Redis Nginx与Lua编写脚本的基本构建块是指令. 指令用于指定何时运行用户Lua代码以及如何使用结果. 下面是显示指令执行顺序的图.  当一个请求发起一个"子请求"的时候,按照 Nginx 的术语,习惯把前者称为后者的"父请求"(parent request). location /main { echo_location /foo; # echo_location发送子请

【精选】Nginx负载均衡学习笔记(一)实现HTTP负载均衡和TCP负载均衡(官方和OpenResty两种负载配置)

说明:很简单一个在HTTP模块中,而另外一个和HTTP 是并列的Stream模块(Nginx 1.9.0 支持) 一.两个模块的最简单配置如下 1.HTTP负载均衡: http { include mime.types; default_type application/octet-stream; upstream live_node { server 127.0.0.1:8089; server 127.0.0.1:8088; } server { listen 80; server_name

Nginx Location 命令语法详细

基本语法  代码如下 复制代码 location [=|~|~*|^~] /uri/ { - } = 严格匹配.如果这个查询匹配,那么将停止搜索并立即处理此请求. ~ 为区分大小写匹配 ~* 为不区分大小写匹配 !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 ^~ 如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式. 例:  代码如下 复制代码 location = / { # 只匹配 / 查询. location / { # 匹配任何查询,因为所有请

【官方文档】Nginx模块Nginx-Rtmp-Module学习笔记(三)流式播放Live HLS视频

源码地址:https://github.com/Tinywan/PHP_Experience HTTP Live Streaming(HLS)是由Apple Inc.实施的非常强大的流视频协议.HLS使用穿过防火墙,代理的HTTP事务,并可以轻松地通过CDN进行分发.因此,该技术能够比RTP或其他基于UDP的协议达到更大的观众观众.今天在线直播的许多视频都是由使用HLS的昂贵系统进行托管,但它们通常很昂贵,需要大量的服务器资源.本教程将向您展示如何设置一个非常实惠的Ubuntu 14.04 VU

【重要】Nginx模块Lua-Nginx-Module学习笔记(三)Nginx + Lua + Redis 已安装成功(非openresty 方式安装)

源码地址:https://github.com/Tinywan/Lua-Nginx-Redis 一. 目标 使用Redis做分布式缓存:使用lua API来访问redis缓存:使用nginx向客户端提供服务,ngx_lua将lua嵌入到nginx,让nginx执行lua脚本,高并发,非阻塞的处理各种请求.url请求nginx服务器,然后lua查询redis,返回json数据. 二.准备工作 系统环境:Ubuntu 14.0 (64位) Redis服务安装:apt-get install redi

静态路由命令学习笔记

cisco的静态路由命令举例如下: ip route 192.168.7.31 255.255.255.255 192.168.19.250 可简单理解为:如果要访问atch7.31,就去找19.250 这里的7.31这个地址是目的网络地址,255.255.255.255是目的网络地址的掩码 19.250这个地址是下一跳的网络地址. 华为的静态路由命令与思科的差不多,只是名称上稍有不同,也只是出于版权考虑 ip route-static 192.168.7.31 255.255.255.255

linux中vps使用命令学习笔记

我用的是putty,按照这个vps的操作流程,记录这些常用命令 passwd:修改密码 cd:current directory:进入目录 : eg: cd  /home  进入home目录: cd  / 到根目录 ls:list: 列出当前目录: mkdir:  make directory :新建目录: eg:mkdir aa mv: move :移动文件 : 用法:mv 文件名  文件目录 rm: remove: 移除文件: wget:下载:用法:wget  下载地址 zip:zip压缩: