location匹配命令
~ #波浪线表示执行一个正则匹配,区分大小写
~* #表示执行一个正则匹配,不区分大小写
^~ #^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录
= #进行普通字符精确匹配
@ #"@" 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files
location 匹配的优先级(与location在配置文件中的顺序无关)
= 精确匹配会第一个被处理。如果发现精确匹配,nginx停止搜索其他匹配。
普通字符匹配,正则表达式规则和长的块规则将被优先和查询匹配,也就是说如果该项匹配还需去看有没有正则表达式匹配和更长的匹配。
^~ 则只匹配该规则,nginx停止搜索其他匹配,否则nginx会继续处理其他location指令。
最后匹配理带有"~"和"~*"的指令,如果找到相应的匹配,则nginx停止搜索其他匹配;当没有正则表达式或者没有正则表达式被匹配的情况下,那么匹配程度最高的逐字匹配指令会被使用。
location 优先级官方文档
例如
请求URI例子:
@location 例子
error_page 404 = @fetch;
location @fetch(
proxy_pass http://fetch;
)
转载请保留:http://www.nginx.cn/115.html
除非注明,本站文章均为: nginx.cn原创,转载请注明本文地址:http://www.nginx.cn/115.html--完--
请教一个Nginx配置问题:
我的根目录下有index.php , usercp.php ,admincp.php 三个文件。
我想让
http://xxx.com/admin/xx =>这样的URL从admincp.php进入
http://xxx.com/user/xx =>这样的URL从usercp.php进入
http://xxx.com/xxx =>最后默认从index.php 进入
Location处理逻辑
1.用uri测试所有的prefix string;
2.Uri精确匹配到=定义的loacation,使用这个location,停止搜索;
3.匹配最长prefix string,如果这个最长prefix string带有^~修饰符,使用这个location,停止搜索,否则:
4.存储这个最长匹配;
5.然后匹配正则表达;
6.匹配到第一条正则表达式,使用这个location,停止搜索;
7.没有匹配到正则表达式,使用#4步存储的prefix string的location。
server {
listen 80;
server_name m4 alias m4.fengji.com;
root /usr/shar/nginx/html;
#1
location = / {
return 500;
}
#2
location /a/1.html {
return 400;
}
#3
location ~ .html {
return 401;
}
#4
location /a/b {
return 402;
}
#5
location ^~ /a {
return 403;
}
#6
location = /a/1.html {
return 404;
}
}
http://m4/a/1.html
404
精确匹配#6
http://m4/a/2.html
403
最长匹配#5,不再匹配正则表达式
http://m4/a/b/1.html
401
最长匹配#4然后匹配#3正则表达式
http://m4/a/b/1.h
402
最长匹配#4,没有匹配的正则表达式
博主,希望你把他灭了,看着这些抄袭狗、败类就来火。
http://blog.chinaunix.net/uid-29179844-id-4761399.html
问好后面的参数是匹配不到的,需要借助 $query_string去判断http://www.nginx.cn/142.html,这篇文章可以看看
你好,我的nginx虚拟主机的root指令下,根下程序文件是否可以包括$document_root父目录文件。
================================
比如:
指令root /data/wwwroot/web1
有以下两个程序
/data/wwwroot/web1/index.php
/data/wwwroot/a.php
问题:
index.php中是否可以包括a.php?
你好,请教一个问题,请帮忙, 我有一个需求是: http://www.a.com/?links893438934**** 后面还有很长链接, 要禁止根目录下任何以 ?links 开头的链接,非常感谢了!
联系客服