【译】nginx关于location部分

译:

Syntax:location [ = | ~ | ~* | ^~ ] uri { ... }``location @name { ... }
Default:
Context:serverlocation

依据请求的URI进行配置。

在对以"%xx"形式的文本解码,对相对路径".“和”…"的格式化和两个或多个相邻斜杠压缩为单个斜杠后的规范URI执行匹配。

一个location可以被定义为一个前缀字符串或者一个正则表达式。正则表达式通过前缀"*"(忽略大小写)或者""(大小写敏感)修饰,在这些位置中,最长前缀字符串匹配的location会被选中和记住。然后会按照正则表达式在配置文件中出现的顺序进行正则表达式的匹配。在第一个正则表达式匹配上就会终止,并且相应的配置会被使用。如果没有匹配上正则表达式,前面记住的前缀字符串匹配的location的配置将会被使用。

location 块是可以嵌套的,以下提到一些例外。

对于不区分大小写的操作系统例如macOS和Cygwin,与前缀字符串匹配忽略大小写。然而,比较被局限于一字节的环境。

正则表达式可以包含捕获,捕获的内容可以被用在之后的其他指令中。

如果匹配的最长的前缀字符串的location有“^~"修饰,之后的正则表达式检查就不会进行了。

使用"=“修饰是定义一个严格匹配的URI和location。如果匹配上一个严格模式,搜索就会终止。例如,如果一个”/"请求经常发生,定义"location = /"将会快速处理这些请求。在第一个严格的location匹配上后就会终止搜索。这样的location显然不能包含嵌套location。

注:在0.7.1到0.8.41版本中,如果一个请求匹配了前缀字符串的location即使没有"=“或者”^~"修饰,搜索也会停止并且正则表达式也不会检查。

让我们通过一个例子进行说明:

location = / {[ configuration A ]
}location / {[ configuration B ]
}location /documents/ {[ configuration C ]
}location ^~ /images/ {[ configuration D ]
}location ~* \.(gif|jpg|jpeg)$ {[ configuration E ]
}

“/“请求将会匹配 configuration A,”/index.html"请求将会匹配configuration B,”/documents/document.html"请求将会匹配configuration C,"/images/1.gif"请求将会匹配configuration D,"/documents/1.jpg"请求将会匹配configuration E。

"@"前缀作为前缀定义的location。这样的location不是用来处理常规请求的,而是用于请求重定向。它们也不能嵌套,也不能包含嵌套位置。

如果一个location通过前缀以斜杠结尾字符定义的,并且请求被 proxy_pass,fastcgi_pass,uwsgi_pass,scgi_pass,memcached_pass或grpc_pass之一处理,然后会执行特殊处理。在响应一个请求的URI等这个字符串但是没有斜杠,一个永久重定向的cod 301将会返回请求的URI并且带上斜杠。如果不想这样,一个严格匹配的URI和location可以像这样定义:

location /user/ {proxy_pass http://user.example.com;
}location = /user {proxy_pass http://login.example.com;
}

注意点

  1. 通过字符串定义的location是从URI的path的前面开始匹配的,这就是为什么总强调前缀字符串的原因,不是URI的path中有一部分匹配上就行,必须要从path的头开始匹配,但是正则就没有这个限制。
  2. 关于^~匹配上就不向后就不向后进行正则的匹配了。这里要注意的是要求 ^~ 匹配上,就是在进行字符串搜索的时候 ^~ 是要被记住的那个location,也就是匹配上的最长前缀的location。

参考

nginx文档locaiton部分

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

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

相关文章

自定义汇编程序,Weaver和运行时的可插拔知识

作为贝叶斯工作的一部分,我对Kie进行了很多重构,使其具有清晰的扩展点。 我想确保可以完成贝叶斯系统的所有工作部件,而无需在现有内核中添加任何代码。 因此,现在每种知识类型都可以拥有自己的包,汇编器,…

动态代理

java动态代理 JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系&…

Kafka学习(一)-------- Quickstart

参考官网:http://kafka.apache.org/quickstart 一、下载Kafka 官网下载地址 http://kafka.apache.org/downloads 截至2019年7月8日 最新版本为 2.3.0 2.12为编译的scala版本 2.3.0为kafka版本 Scala 2.12 - kafka_2.12-2.3.0.tgz (asc, sha512) 解压 > tar -xzf…

关于页面布局间距使用的经验之谈

在页面布局的时候遇到一个问题在此记录。 有如下布局需求。页面上大多数都是这样的,一块一块从上到下排列。 块与块之间的间距需要固定由谁来负责。例如第一个块和第二个块之间的间距,就需要第二个块的margin-top完成,文字和第二个块之间的间…

最简洁的js鼠标拖曳效果【原】

请原谅我是一个标题档&#xff0c;不过还是很简洁的&#xff0c;因为只是初步的实现的拖曳效果<!DOCTYPE html><html><head><meta http-equiv"Content-Type"content"text/html; charsetutf-8"/><meta http-equiv"Content-…

safari 音频播放问题

问题描述&#xff1a; 点击播放音频按钮发现并没有声音&#xff08;并不是自动播放&#xff0c;是有用户行为的&#xff09;。 import React, { useEffect, useState, useRef } from reactfunction comp() {let [paused, setPaused] useState(true)let audioDom useRef(null…

canvas绘制经典折线图(一)

最终效果图如下&#xff1a; 实现步骤如下&#xff1a;注-引用了jQuery HTML代码 <!doctype html><html lang"en"><head><meta charset"UTF-8"><meta name"Generator" content"EditPlus"><meta nam…

如何从Java EE无状态应用程序连接到MongoDB

在本文中&#xff0c;我将介绍如何从无状态Java EE应用程序连接到MongoDB&#xff0c;以利用与MongoDB Java驱动程序提供的数据库的内置连接池。 如果您开发的REST API对MongoDB执行操作&#xff0c;则可能是这种情况。 获取Java MongoDb驱动程序 要将Java连接到MongoDB&#…

开发流程补全

在开发过程中我意识到一个问题 具体问题就是我没有一个可靠的机制来防止自己犯错 现在的流程是 开发 调试 -> 测试同学 -> 上线 这里测试的时间会有点长&#xff0c;因为bug会有点多&#xff0c;然后需要修改bug&#xff0c;然后测试验证 改bug时间 理解测试bug描述…

Linux 锁机制

本文讨论了 Linux 内核中可用的大量同步或锁定机制。这些机制为 2.6 版内核的许多可用方法提供了应用程序接口&#xff08;API&#xff09; 。但是在深入学习 API 之前&#xff0c;首先需要明白将要解决的问题。 当存在并发特性时&#xff0c;必须使用同步方法。当在同一时间段…

CSS中越界问题经典解决方案

8.CSS相关知识 (1)如何解决父元素的第一个子元素的margin-top越界问题 1)为父元素加border-top: 1px;——有副作用 2)为父元素指定padding-top: 1px;——有副作用 3)为父元素指定overflow:hidden;——有副作用 4)为父元素添加前置内容生成——推荐使用 .parent:before { conten…

用可编写脚本的终结点遍历REST应用程序

我喜欢JDK附带ScriptEngine的事实。 当您要评估服务器环境中已经部署的应用程序并进行故障排除时&#xff0c;它非常灵活。 将此REST端点添加到Java EE应用程序中&#xff0c;它将使您可以立即访问该应用程序的内部状态。 package myrestapp;import java.io.StringReader; imp…

win7笔记本为手机共享wifi

1、cmd netsh wlan set hostednetwork modeallow ssidyourname keyyourpassword 开启win7的虚拟wifi&#xff0c;让电脑变成无线路由器 这时&#xff0c;网络连接中会多出一个网卡为“Microsoft Virtual WiFi Miniport Adapter”的无线连接2。如果没有&#xff0c;需要更新无线…

createjs中shape的属性regX和regY

官方文档说regX和regY是图形与注册点的距离。 那么注册点是什么呢&#xff1f; 我理解注册点就是图形的x/y对应的点图形动效的原点就是注册点 如果修改图形的regX和regY值图形在画布上的位置是会被改变的&#xff0c;但是注册点其实并没有被改变。因为图形的x/y值并没有被改…

CSS3里的display

默认值&#xff1a;inline 适用于&#xff1a;所有元素 继承性&#xff1a;无 动画性&#xff1a;否 none&#xff1a;隐藏对象。与visibility属性的hidden值不同&#xff0c;其不为被隐藏的对象保留其物理空间inline&#xff1a;指定对象为内联元素。block&#xff1a;指定…

H3C 单区域OSPF配置示例二

转载于:https://www.cnblogs.com/fanweisheng/p/11163688.html

身份反模式:联邦筒仓和意大利面条身份

分析公司Quocirca的最新研究证实&#xff0c;现在许多企业的外部用户比内部用户更多&#xff1a;在欧洲&#xff0c;有58&#xff05;的企业直接与其他企业和/或消费者的用户进行交易&#xff1b; 仅在英国&#xff0c;这一数字就达到了65&#xff05;。 如果您回顾历史&#x…

OpenSSL命令

Openssl Windows下编译过程1、下载openssl源代码以及相应的vc工程2、下载perl工具&#xff0c;如&#xff1a;ActivePerl-5.8.8.820-MSWin32-x86-274739.msi3、安装ActivePerl4、打开控制台程序&#xff0c;在openssl解压后的目录下执行Perl Configure VC-WIN32命令&#xff0c…

修改webpack的publicPath为动态设置以适配公司活动平台

背景&#xff1a; 我们需要将React开发的应用部署到一个活动搭建平台上&#xff0c;这意味我们只需要上传源码&#xff0c;没有搭建服务器的环节&#xff0c;没有配置Nginx的环节。具体步骤就是在该平台新建一个活动&#xff0c;然后将自己的源码传到这个活动下&#xff0c;然…

多个气泡向上冒出!

这里展示白色半透明气泡如下图&#xff1a;实际是动态 思路&#xff1a;HTML里只需要一个CANVAS元素&#xff0c;Javascript里操作canvas 1、给canvas里绘制背景图片 2、在绘制半径为0-10px的圆形&#xff0c;x坐标屏幕水平随机&#xff0c;y所标竖直大于屏幕高度。 圆形背景…