1.location规则介绍
- URI:Web上可用的每种资源 - HTML文档、图像、视频片段、程序等 - 由一个通过通用资源标志符(UniversalResource Identifier, 简称"URI")进行定位。
- URL:是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上。采用URI可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。
nginx就是通过拦截到的请求去对配置好的location块(location block)进行请求代理的。被代理的url去对location后边的字符串(或正则)进行匹配,根据一定的规则选择走哪个location。
2.location规则及其优先级
语法 | 描述 |
---|---|
/ | 通用匹配,任何请求都会匹配到,优先级最高 |
= | 表示精确匹配,优先级也是最高的 |
^~ | 表示uri以某个常规字符串开头,不做正则匹配检查 |
~ | 表示区分大小写的正则匹配 |
~* | 表示不区分大小写的正则匹配 |
!~ | 表示区分大小写不匹配的正则 |
!~* | 表示不区分大小写不匹配的正则 |
Location优先级:
= > ^~ > ~|~*|!~|!~* > /
3.测试
[root@server2 ~]# vi /etc/nginx/conf.d/xingyun.conf
server {
listen 192.168.62.139:80;
server_name www.xingyun.com;
location / {
echo "/";
}
location =/ {
echo "=/";
}
location =/nginx {
echo "jingzhunpipei_nginx";
}
location /nginx {
echo "nginx";
}
location ~ \.(gif|jpg|png|css|js)$ {
echo "small: gif/jpg/png/js";
}
location ~* \.png$ {
echo "all:png";
}
location ^~ /static/ { #以/static/开头就可以匹配到
echo "static";
}
}
测试:
[root@server2 ~]# curl 192.168.62.139/nginx
jingzhunpipei_nginx
You have new mail in /var/spool/mail/root
[root@server2 ~]# curl 192.168.62.139/nginx/abc
nginx
[root@server2 ~]# curl 192.168.62.139/ngidgjhbsjan
/
[root@server2 ~]# curl 192.168.62.139/
=/
[root@server2 ~]# curl 192.168.62.139/aa.png
small: gif/jpg/png/js
[root@server2 ~]# curl 192.168.62.139/aa.PNG
all:png
[root@server2 ~]# curl 192.168.62.139/aa.jpg
small: gif/jpg/png/js
[root@server2 ~]# curl 192.168.62.139/aa.JPG
/
[root@server2 ~]# curl 192.168.62.139/static
/
[root@server2 ~]# curl 192.168.62.139/static/
static
[root@server2 ~]# curl 192.168.62.139/static/dfg
static