Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >nginx中的PCRE ^~符号

nginx中的PCRE ^~符号
EN

Stack Overflow用户
提问于 2017-06-29 06:48:27
回答 1查看 1.1K关注 0票数 0

我有这个nginx定位块(来自https://munin.readthedocs.io/en/2.0.8/example/webserver/nginx.html )

代码语言:javascript
代码运行次数:0
复制
location ^~ /munin-cgi/munin-cgi-graph/ {
    fastcgi_split_path_info ^(/munin-cgi/munin-cgi-graph)(.*);
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_pass unix:/var/run/munin/fastcgi-graph.sock;
    include fastcgi_params;
}

看来nginx正在使用PCRE。^的意思是从http://www.pcre.org/original/doc/html/pcrepattern.html中“断言字符串的开始(或多行模式下的行)”,但是我找不到~的意思。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-29 07:17:38

不要只读readthedocs.io的文档。要获得全面的解释,请阅读实际的文档。

module.html#location

我引述如下:

语法: location =而外:-上下文:服务器,位置

这告诉我们,^~location支持的操作符之一。

换句话说:这根本不是任何正则表达式的一部分,它是一个修饰符。

这些文件继续下去:

为了找到匹配给定请求的位置,nginx首先检查使用前缀字符串(前缀位置)定义的位置。其中,对匹配前缀最长的位置进行选择和记忆。然后检查正则表达式..。

这意味着nginx试图通过比较URL前缀(速度很快)来找到匹配项,如果失败,则继续尝试正则表达式(这要慢得多)。

几句话之后:

如果最长匹配前缀位置有“^~”修饰符,则不检查正则表达式。

因此,这意味着如果给定的URL有候选匹配,那么您可以利用^~来阻止nginx尝试正则表达式来找到更好的匹配。这是一个性能优化。

所以,用简单的英语

代码语言:javascript
代码运行次数:0
复制
location ^~ /munin-cgi/munin-cgi-graph/ {
}

意思是“所有的位置开始/munin-cgi/munin-cgi-graph/__,不要费心寻找更好的匹配”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44828433

复制
相关文章
JDBC连接池、JDBC Template使用
点击下载 链接:https://pan.baidu.com/s/1ooBjjuLDZytAHWyxkRXwOw 提取码:9bjo
不愿意做鱼的小鲸鱼
2022/09/24
7880
JDBC连接池、JDBC Template使用
JDBC连接大全哦
Class.forName(“oracle.jdbc.driver.OracleDriver”).newInstance(); String url=”jdbc:oracle:thin:@localhost:1521:orcl”; //orcl为数据库的SID String user=”test”; String password=”test”; Connection conn= DriverManager.getConnection(url,user,password); 
全栈程序员站长
2021/04/26
7740
MySQL的JDBC连接
JDBC 是 Java Database Connective的缩写,表示使用Java去连接数据库进行数据操作的过程
全栈程序员站长
2022/09/09
3.3K0
jdbc连接oracle语法
jdbc也有事物:connection.setAutoCommit(false) 默认是true自动提交
HUC思梦
2020/09/03
9120
使用jdbc连接mysql
image.png JDBC连接MYSQL数据库: package cn.outofmemory.test;import java.sql.Connection;import java.sql.DriverManager;public class Mysql { public static void main(String arg[]) { try { Connection con = null; //定义一个MYSQL链接对象
java达人
2018/01/31
3K0
使用jdbc连接mysql
JDBC连接池
当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。
羊羽shine
2019/05/29
1K0
JDBC SSL连接MySQL
SSL(Secure Socket Layer:安全套接字层),利用数据加密、身份验证和消息完整性验证机制,为基于TCP等可靠连接的应用层协议提供安全性保证。
bisal
2021/09/10
5.7K0
JDBC SSL连接MySQL
jdbc连接mysql5.7_JDBC连接MySQL5.7的方法
1.首先准备mysql 和eclipse环境,在环境搭建好之后,从eclipse官网下载jdbc的驱动包,下载地址http://dev.mysql.com/downloads/connector/j/
全栈程序员站长
2022/10/01
4.2K0
java学习:jdbc连接示例
java中最常用的数据库连接技术就是JDBC。 目前几乎所有的主流数据库都提供了相应的jdbc驱动,可以简单理解为.net中的数据库客户端dll,.net中如果对于netframework默认不支持的数据库(比如sqllite,mysql之类),就必须要下载专门的数据库客户端dll文件,在vs.net中添加该dll的引用,然后就可以用它来连接数据库。 jdbc也是同样的道理,jdk默认安装后,几乎没带什么jdbc驱动,需要到各数据库提供商网站下载对应的jdbc驱动,以mysql为例,下载mysql jdbc
菩提树下的杨过
2018/01/24
1.5K0
python使用jdbc连接phoeni
链接:https://pypi.python.org/pypi/JayDeBeApi/
py3study
2020/01/13
9730
JDBC SSL连接SQL Server
上次碰到的是《JDBC SSL连接MySQL》,这次则是SSL连接SQL Server。
bisal
2021/09/10
2.9K0
常用JDBC连接池
针对不同的JDK需要引入对应的HikariCP,详见:Github项目地址 。 以JDK8为例子,在项目中引入如下依赖:
编程随笔
2023/10/15
3250
Hive通过JDBC连接HiveServer
修改 hadoop 配置 首先需要修改hadoop的配置文件etc/hadoop/core-site.xml,添加如下配置项,其中 <user> 为连接用户,根据具体用户替换。 <?xml versi
kongxx
2018/05/14
1.8K1
群晖docker使用教程_docker的使用
概括  Docker与传统虚拟机的区别 与传统虚拟机的区别  Docker的安装 的安装  Docker daemon , client , containerd  镜像与容器操作  容器运行配置  Docker网络配置 网络配置  Alpine Docker Image  制作自己的 Docker Image  Docker安全性问题 安全性问题  Docker运行原理
全栈程序员站长
2022/11/08
2.7K0
如何使用JDBC连接操作Kylin?
在之前的博客中已经谈到,Kylin提供了各种Rest API、JDBC/ODBC接口。如果我们要将数据以可视化的方式展现出来,需要使用Kylin的JDBC方式连接执行SQL,获取kylin的执行结果。本篇博客,为大家带来的就是如何使用JDBC操作连接Kylin的步骤流程!
大数据梦想家
2021/01/27
1.3K0
如何使用JDBC连接操作Kylin?
JDBC连接MySQL数据库
方式一: Driver driver = new com.mysql.cj.jdbc.Driver(); String url = "jdbc:mysql://localhost:3306/test?
Linux
2019/12/02
20K1
JDBC和连接池原理
JDBC是Java提供的一组操作数据库的API,可以屏蔽各种各样的数据库差异,向上提供统一的服务接口,数据库驱动程序会实现这些接口。
冰寒火
2023/03/04
1.2K0
JDBC【介绍JDBC、使用JDBC连接数据库、简单的工具类】
1.什么是JDBC JDBC全称为:Java Data Base Connectivity,它是可以执行SQL语句的Java API 2.为什么我们要用JDBC 市面上有非常多的数据库,本来我们是需要根据不同的数据库学习不同的API,sun公司为了简化这个操作,定义了JDBC API【接口】 sun公司只是提供了JDBC API【接口】,数据库厂商负责实现。 对于我们来说,操作数据库都是在JDBC API【接口】上,使用不同的数据库,只要用数据库厂商提供的数据库驱动程序即可 这大大简化了我们的学习成本 3.
Java3y
2018/03/15
1.4K0
MySQL JDBC URL常用连接参数
实现本地事务表时,需要在update时返回被修改的行数,但是因为useAffectedRows=false,导致一直都返回匹配的行,事务重复执行。本文解释一下常用的MySQL Jdbc URl常用连接参数 常用属性 参数 作用 默认值 备注 useUnicode 是否使用unicode true mysql8没有这个属性了 characterEncoding 设置字符集 无 zeroDateTimeBehavior datetime的字段值全部为0时的处理方式 EXCEPTION 一般都会设置为con
十毛
2021/11/24
4K0
JDBC连接数据库
Java 连接 MySQL 需要驱动包,最新版下载地址为:http://dev.mysql.com/downloads/connector/j/,
润森
2019/11/18
1.5K0

相似问题

连接到Docker mysql (jdbc url)

111

无法连接到postgres db - docker群

10

Docker群尺度

20

Docker群复制

20

Docker容器之间的JDBC连接(坞-组合)

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档