nginx配置文件中的location中文详解

location

语法:location [=|~|~*|^~] /uri/ { … }
默认:否

上下文:server

这个指令随URL不同而接受不同的结构。你可以配置使用常规字符串和正则表达式。如果使用正则表达式,你必须使用 ~* 前缀选择不区分大小写的匹配或者 ~ 选择区分大小写的匹配。

确定 哪个location 指令匹配一个特定指令,常规字符串第一个测试。常规字符串匹配请求的开始部分并且区分大小写,最明确的匹配将会被使用(查看下文明白 nginx 怎么确定它)。然后正则表达式按照配置文件里的顺序测试。找到第一个比配的正则表达式将停止搜索。如果没有找到匹配的正则表达式,使用常规字符串的结果。

有两个方法修改这个行为。第一个方法是使用 “=”前缀,将只执行严格匹配。如果这个查询匹配,那么将停止搜索并立即处理这个请求。例子:如果经常发生”/”请求,那么使用 “location = /” 将加速处理这个请求。

第二个是使用 ^~ 前缀。如果把这个前缀用于一个常规字符串那么告诉nginx 如果路径匹配那么不测试正则表达式。

而且它重要在于 NGINX 做比较没有 URL 编码,所以如果你有一个 URL 链接’/images/%20/test’ , 那么使用 “images/ /test” 限定location。

总结,指令按下列顺序被接受:
1. = 前缀的指令严格匹配这个查询。如果找到,停止搜索。
2. 剩下的常规字符串,长的在前。如果这个匹配使用 ^~ 前缀,搜索停止。
3. 正则表达式,按配置文件里的顺序。
4. 如果第三步产生匹配,则使用这个结果。否则使用第二步的匹配结果。

例子:

location = / {
# 只匹配 / 查询。
[ configuration A ]
}

location / {
# 匹配任何查询,因为所有请求都已 / 开头。但是正则表达式规则和长的块规则将被优先和查询匹配。
[ configuration B ]
}

location ^~ /images/ {
# 匹配任何已 /images/ 开头的任何查询并且停止搜索。任何正则表达式将不会被测试。
[ configuration C ]
}

location ~* \.(gif|jpg|jpeg)$ {
# 匹配任何已 gif、jpg 或 jpeg 结尾的请求。然而所有 /images/ 目录的请求将使用 Configuration C。
[ configuration D ]
}

例子请求:

/ -> configuration A

/documents/document.html -> configuration B

/images/1.gif -> configuration C

/documents/1.jpg -> configuration D

注意:按任意顺序定义这4个配置结果将仍然一样。

时间: 2024-10-20 07:19:05

nginx配置文件中的location中文详解的相关文章

nginx配置文件中的location详解

原文:http://outofmemory.cn/code-snippet/3037/nginx-configuration-file-de-location-explain-in-detail location 语法:location [=|~|~*|^~] /uri/ { … } 默认:否 上下文:server 这个指令随URL不同而接受不同的结构.你可以配置使用常规字符串和正则表达式.如果使用正则表达式,你必须使用 ~* 前缀选择不区分大小写的匹配或者 ~ 选择区分大小写的匹配. 确定 哪

struts2配置文件中的method={1}详解

struts.xml中的配置: <!-- 配置用户模块的action --> <action name="user_*" class="userAction" method="{1}"> <result name="registPage">/WEB-INF/jsp/regist.jsp</result> </action> /* 此时method={1}中的{1}代表

nginx配置文件中,location字段里面的root和外面root的区别

1. location里面的root例子 server{ listen 80; server_name www.wzw.com; location /www { root /data/; //设置虚拟主机主目录相对路径 index index.html; //设置虚拟主机默认主页 } } 这个配置表示输入 www.wzw.com:80/www 时会访问本机的/data/www/ 目录去找文件 2. location里面的alias例子 server{ listen 80; server_name

Nginx配置文件nginx.conf中文详解(转)

######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] error_log /usr/local/nginx/logs/error.log info; #进程pid文件 pid /usr/local/nginx

Nginx主配置文件nginx.conf中文详解

第1章 nginx配置解释图解 第2章 Nginx核心配置文件nginx.conf史上最细中文详解 2.1 定义Nginx运行的用户和用户组 2.2 nginxworker进程数,即处理请求的进程(熟称负责接客的服务员) 2.3 cpu亲和力配置,让不同的进程使用不同的cpu 2.4 全局错误日志定义类型,[ debug|info|notice|warn|error|crit] 2.5 把进程号记录到文件 2.6 Nginx worker最大打开文件数,可设置为系统优化后的ulimit -HSn

Nginx配置文件nginx.conf中文详解(转载)

请参考:http://wiki.nginx.org/Main #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] error_log ar/loginx/error.log info; #进程文件 pid ar/runinx.pid; #一个nginx进程打开的最多文件描述符

Nginx 配置文件nginx.conf中文详解

1 ######Nginx配置文件nginx.conf中文详解##### 2 3 #定义Nginx运行的用户和用户组 4 user www www; 5 6 #nginx进程数,建议设置为等于CPU总核心数. 7 worker_processes 8; 8 9 #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] 10 error_log /usr/local/nginx/logs/error.log info; 11 12 #进

Nginx中文详解、配置部署及高并发优化

  一.Nginx常用命令: 1. 启动 Nginx          /usr/local/nginx/sbin/nginx [email protected]:sudo ./sbin/nginx 2. 停止 Nginx [email protected]:sudo ./sbin/nginx -s stop[email protected]:sudo ./sbin/nginx -s quit -s都是采用向 Nginx 发送信号的方式.3. Nginx 重载配置 [email protecte

mysql数据库my.ini配置文件中文详解

mysql数据库my.ini配置文件中文详解 mysqld程序–目录和文件 basedir = path 使用给定目录作为根目录(安装目录). character-sets-dir = path 给出存放着字符集的目录. datadir = path 从给定目录读取数据库文件. pid-file = filename 为mysqld程序指定一个存放进程ID的文件(仅适用于UNIX/Linux系统); Init-V脚本需要使用这个文件里的进程ID结束mysqld进程. socket = filen