nginx location
一、location简介
1、 location作用
location指令的作用是可以根据用户请求的URI来执行不同的应用,其实就是根据用户请求的网站的地址URL匹配,匹配成功即进行相关操作
二、
location使用的语法例子
location{=|~|~*|^~}uri{
...
}
location |
{=|~|~*|^~} |
uri |
{....} |
指令 |
匹配标识 |
匹配的网站网址 |
匹配URI后要执行的配置段 |
相当于if判断,即
http://www.cnblog.com/pyrene/
location/pyrene/ {
do someting
}
如果匹配到pyrene就do someting
location/ / {
do someting
}
如果什么都没有匹配到,那么就去找默认do something
~ :用于区分大小写(大小写敏感)的匹配 ~*:用于不区分大小写的匹配 ~:作用是在常规字符串匹配检查之后,不做正则表达式的检查,即,如果最明确的那个字符串匹配location匹配中有此前缀,那么不做正则表达式的检查 ^~:作用是在常规的字符串匹配检查之后,不做正则表达式的检查 = :精确匹配
三、不用URI及特殊字符组合匹配的顺序说明
不用RUI及特殊字符组合匹配顺序 |
匹配说明 |
第一名“location = /{” |
精确匹配/ |
第二名“location ^~/images/ {” |
匹配常规字符串,不做正则匹配检查 |
第三名 “location ~*\.(gif|jpg|jpeg)$ {” |
正则匹配 |
第四名 “location /documents/{” |
匹配常规字符串,如果有正则则优先匹配正则 |
第五名 “location / {” |
所有location都能匹配后的默认匹配 |
四、配置
1、备份
[root@oldboy extra]# cp www.conf www.conf.pyrene.20170420.bak1
2、配置
[root@oldboy extra]# vim www.conf server { listen 80; server_name www.cnblogs.co pyrene; location / { return 401; } location = / { return 402; } location /documents/ { return 403; } location ^~ /images/ { return 404; } location ~* \.(gif|jpg|jpeg)$ { return 500; } }
3、重启
[root@oldboy extra]# /application/nginx/sbin/nginx -t nginx: the configuration file /application/nginx-1.8//conf/nginx.conf syntax is ok nginx: configuration file /application/nginx-1.8//conf/nginx.conf test is successful [root@oldboy extra]# /application/nginx/sbin/nginx -s reload
4、操作
[root@oldboy extra]# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.cnblogs.co 402 [root@oldboy extra]# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.cnblogs.co/index.html 401 [root@oldboy extra]# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.cnblogs.co/documents 401 [root@oldboy extra]# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.cnblogs.co/images/ 404 [root@oldboy extra]# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.cnblogs.co/documents/documents.html 403 [root@oldboy extra]# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.cnblogs.co/images/1.gif 404 [root@oldboy extra]# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.cnblogs.co/ddd/1.gif 500 [root@oldboy extra]# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.cnblogs.co/documents/1.gif 500