概述
Location,用来快速进行资源定位,定义不同方式来处理或解决url请求,一般有:/ , = /, ~, ~* ,^~
优先级是:(location = /)>(localtion^~)>(location ~| ~* )>(location /)
其中,~ 与 ~*,谁在上面先匹配谁.
一、Location / 匹配
# "/" 是直接到nginx发布目录/usr/local/nginx/html/里来查资源,比如location.html
location / {
root html;
index index.html index.htm;
}
在发布目录里创建location.html文件,内容为:this is location.html。
执行172.16.0.9/location.html时,服务器发布目录里找这个location.html文件,并把结果this is loction.html返回出来,如下:
root@backupserver:/usr/local/nginx/html# ls
50x.html index.html
root@backupserver:/usr/local/nginx/html# echo "this is location.html" > ./location.html
root@backupserver:/usr/local/nginx/html# ls
50x.html index.html location.html
root@backupserver:/usr/local/nginx/html# /usr/local/nginx/sbin/nginx -s reload
root@backupserver:/usr/local/nginx/html# curl 172.16.0.9/location.html
this is location.html
root@backupserver:/usr/local/nginx/html#
二、Location = / 匹配
精准定位 一般用来匹配某个文件,优先级高于 /
比如:
在nginx配置文件中增加一个location = / ,定位到/data目录。如下:
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
autoindex on;
root html;
index index.html index.htm;
}
location = /location.html {
root /data/;
index index.html;
}
重启Nginx服务,测试:
1、先不在/data/目录创建location.html。
可以看到,报404错误。这是因为,= / 优先级高于/ ,服务器去第二个location里寻找location.html这个文件,而不是去第一个location里找。由于第二个location指定的目录是/data,/data目录下没有location.html文件
在/data目录下创建location.html文件
root@backupserver:/usr/local/nginx/html# ls /data/
www
root@backupserver:/usr/local/nginx/html# echo "this is other location.com" > /data/location.html
root@backupserver:/usr/local/nginx/html# ls
50x.html index.html location.html
root@backupserver:/usr/local/nginx/html# curl 172.16.0.9/location.html
this is other location.com
root@backupserver:/usr/local/nginx/html#
上面可以看到,访问 服务器是,服务器首先去location = /里面找,即使它在另一个location下面。精准匹配优先级是最高的,它不论是在配置文件内容上面还是下面,服务器首先去找精准匹配的内容
除以精准匹配,还有~ ,~* ,^~
~是对大小写敏感,匹配时严格大小写
~* 是对大小写不敏感,匹配时不分大小写。
^~用来匹配以uri开头,匹配成功以后,会停止搜索后面的正则表达式匹配。
以上优先最高的是精准匹配。location = /,其次是:^,然后是 和~* 这两种看准在配置文件内容上面,就先匹配谁,优先级最低的是 /
以上规则在使用nginx时会被广泛使用,比如多台服务器做网站动静分离时:
location ~ .*.(html|htm|js|css|txt|png|jpg|jpeg|doc)$ {
root html;
}
最后
以上就是干净大船为你收集整理的简述Nginx的location的常见规则优先级的全部内容,希望文章能够帮你解决简述Nginx的location的常见规则优先级所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复