这一篇将简单说一下Nginx的location功能。
1.Nginx location
1.1.location作用
location指令的作用就是根据用户请求的URI来执行不同的应用。
1.2.location语法
location [ = | ~ | ~* | ^~ ] uri { ... }
- 将以上语法分为四部分进行说明:
location:指令 [ = | ~ | ~* | ^~ ]:匹配的标识 uri:匹配的网站地址 {...}:匹配uri后要执行的配置段
- 注意:
~与~*的区别是:~区分大小写,~*不区分大小写 ^~:进行常规字符串匹配后,不做正则表达式的检查
1.3.location匹配示例
location = / { [ configuration A] } location / { [ configuration B] } location /documents { [ configuration C] } location ^~ /images/ { [ configuration D] } location ~* \.(gif|jpg|jpeg)$ { [ configuration E] }
上述配置,请求“/”时,匹配configuration A 请求"/index.html"时,讲匹配configuration B 请求“/documents/docunment.html”时,匹配configuration C 请求“images/1.gif”时,匹配configuration D 请求“/documents/1.jpg”时,匹配configuration E
1.4.location配置实例
server { listen 80; server_name bbs.yygg.com; root html/bbs; location / { return 401; } location =/ { return 402; } location /documents/ { return 403; } location ^~ /images/ { return 405; } location ~* \.(gif|jpg|jpeg)$ { return 406; }
- 测试结果
[root@nginx-01 ~]# curl -s -o /dev/null -I -w "%{http_code}\n" bbs.yygg.com 402 [root@nginx-01 ~]# curl -s -o /dev/null -I -w "%{http_code}\n" bbs.yygg.com/ 402 [root@nginx-01 ~]# curl -s -o /dev/null -I -w "%{http_code}\n" bbs.yygg.com/index.html 401 [root@nginx-01 ~]# curl -s -o /dev/null -I -w "%{http_code}\n" bbs.yygg.com/documents/documents.html 403 [root@nginx-01 ~]# curl -s -o /dev/null -I -w "%{http_code}\n" bbs.yygg.com/images/1.gif 405 [root@nginx-01 ~]# curl -s -o /dev/null -I -w "%{http_code}\n" bbs.yygg.com/documents/1.jpg 406 [root@nginx-01 ~]# curl -s -o /dev/null -I -w "%{http_code}\n" bbs.yygg.com/yyang/ 401
- 返回的状态码也是与配置中的规则相匹配的。
1.5.不用uri及特殊字符组合匹配的顺序说明
location =/ {}:精确匹配 location ^~ /images/ {}:常规字符串匹配,不做正则匹配 location ~* \.(gif|jpg|jpeg)$ {}:正则匹配 location /documents/ {}:常规字符串匹配,如果有正则,优先匹配正则 location / {}:所有location都不匹配后默认匹配