Nginx的location配置

安装第三方模块echo-nginx-module

git clone https://github.com/openresty/echo-nginx-module.git
./configure --add-module=/nginx安装目录/echo-nginx-module
make && make install
安装之后,可以直接在配置文件中使用 echo ‘‘ 命令

location语法

location [=|^~|~|~*] /uri/ { …. }
coding.net/u/aminglinux/p/nginx/git/blob/master/location/ruler.md

nginx location语法规则:location [=|~|~*|^~] /uri/ { … }
nginx的location匹配的变量是$uri

规则示例
location = "/12.jpg" { ... }
如:
www.aminglinux.com/12.jpg 匹配
www.aminglinux.com/abc/12.jpg 不匹配

location ^~ "/abc/" { ... }
如:
www.aminglinux.com/abc/123.html 匹配
www.aminglinux.com/a/abc/123.jpg 不匹配

location ~ "png" { ... }
如:
www.aminglinux.com/aaa/bbb/ccc/123.png 匹配
www.aminglinux.com/aaa/png/123.html 匹配

location ~* "png" { ... }
如:
www.aminglinux.com/aaa/bbb/ccc/123.PNG 匹配
www.aminglinux.com/aaa/png/123.html 匹配

location /admin/ { ... }
如:
www.aminglinux.com/admin/aaa/1.php 匹配
www.aminglinux.com/123/admin/1.php 不匹配

小常识
有些资料上介绍location支持不匹配 !~,
如: location !~ ‘png‘{ ... }
这是错误的,location不支持 !~

如果有这样的需求,可以通过if来实现,
如: if ($uri !~ ‘png‘) { ... }

注意:location优先级小于if

location优先级及案例

= 高于 ^~ 高于 ~* 等于 ~ 高于 /
coding.net/u/aminglinux/p/nginx/git/blob/master/location/priority.md

对比/和~
示例1:
server{
listen 80;
server_name www.aminglinux.com;
root /tmp/123.com;

location /abc/
{
    echo "/";
}
location ~ ‘abc‘
{
    echo "~";
}

}

测试命令:curl -x127.0.0.1:80 ‘www.aminglinux.com/abc/1.png‘
结果是:~

对比^~和~

示例4:
server
{
listen 80;
server_name www.aminglinux.com;
root /tmp/123.com;

location ~ ‘/abc‘
{
    echo ‘~‘;
}
location ^~ ‘/abc‘
{
    echo ‘^~‘;
}

}

测试命令:curl -x127.0.0.1:80 ‘www.aminglinux.com/abc/123.html
结果是:^~

对比=和^~
示例5:
server
{
listen 80;
server_name www.aminglinux.com;
root /tmp/123.com;

location ^~ ‘/abc.html‘
{
    echo ‘^~‘;
}
location = ‘/abc.html‘
{
    echo ‘=‘;
}

}

测试命令:curl -x127.0.0.1:80 ‘www.aminglinux.com/abc.html
结果是:=

原文地址:http://blog.51cto.com/jacksoner/2315945

时间: 2024-10-05 02:43:16

Nginx的location配置的相关文章

nginx的location配置详解

语法规则: location [=|~|~*|^~] /uri/ { … } = 开头表示精确匹配 ^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可.nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格). ~ 开头表示区分大小写的正则匹配 ~*  开头表示不区分大小写的正则匹配 !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则 / 通用匹配,任何请求都会匹配到. 多个location配置

nginx之location配置

语法规则: location [=|~|~*|^~] /uri/ { … } = 开头表示精确匹配 ^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可.nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格). ~ 开头表示区分大小写的正则匹配 ~*开头表示不区分大小写的正则匹配 !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则 / 通用匹配,任何请求都会匹配到. 多个location配置的情

Nginx 的location配置详解

Nginx 允许用户定义 Location block ,并指定一个匹配模式(pattern)匹配特定的 URI.除了简单的字符串(比如文件系统路径),还允许使用更为复杂的匹配模式(pattern). Location block 的基本语法形式是: location [=|~|~*|^~|@] pattern { ... } [=|~|~*|^~|@] 被称作 location modifier ,这会定义 Nginx 如何去匹配其后的 pattern ,以及该 pattern 的最基本的属性

Nginx中location配置[转]

关于一些对location认识的误区 1. location 的匹配顺序是“先匹配正则,再匹配普通”. 矫正: location 的匹配顺序其实是“先匹配普通,再匹配正则”.我这么说,大家一定会反驳我,因为按“先匹配普通,再匹配正则”解释不了大家平时习惯的按“先匹配正则,再匹配普通”的实践经验.这里我只能暂时解释下,造成这种误解的原因是:正则匹配会覆盖普通匹配(实际的规则,比这复杂,后面会详细解释). 2. location 的执行逻辑跟 location 的编辑顺序无关. 矫正:这句话不全对,

nginx的location配置root、alias用法和区别

root & alias区别root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上root的处理结果是:root路径+location路径alias的处理结果是:使用alias路径替换location路径alias是一个目录别名的定义,root则是最上层目录的定义还有一个重要的区别是alias后面必须要用"/"结束,否则会找不到文件的,而root则可有可无 实例详解root实例:location ^~

Nginx得Location配置详解之精准匹配

一.location 的定义 location 有"定位"的意思,根据Uri来进行不同的定位. 在虚拟主机的配置中,是必不可少得,location可以把网站的不同部分,定位到不同的处理方式上. 二.location 的语法 location [=|~|~*|^~] patt{ } 中括号可以不写任何参数,此时称为一般匹配,也可以写参数 因此,大类新可以分为3种: location=patt{}[精准匹配] location  patt{} [一般匹配] location ~patt{}

Nginx之location 匹配规则详解

Nginx之location 匹配规则详解 关于一些对location认识的误区 1. location 的匹配顺序是"先匹配正则,再匹配普通". 矫正: location 的匹配顺序其实是"先匹配普通,再匹配正则".我这么说,大家一定会反驳我,因为按"先匹配普通,再匹配正则"解释不了大家平时习惯的按"先匹配正则,再匹配普通"的实践经验.这里我只能暂时解释下,造成这种误解的原因是:正则匹配会覆盖普通匹配(实际的规则,比这复杂,

Nginx之二:nginx.conf简单配置(参数详解)

vim /usr/local/nginx/conf/nginx.conf #user  nobody; #程序运行使用账户 worker_processes  1; #启动的进程,通常设置成和cpu的数量相等 #全局错误日志级PID文件 #error_log  logs/error.log; #error_log  logs/error.log  notice; #error_log  logs/error.log  info; #pid        logs/nginx.pid; event

Nginx Location配置总结

http://blog.sina.com.cn/s/blog_97688f8e0100zws5.html 语法规则: location [=|~|~*|^~] /uri/ { … }= 开头表示精确匹配^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可.nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格).~ 开头表示区分大小写的正则匹配~*  开头表示不区分大小写的正则匹配!~和!~*分别为区分大小写