一、语法
Location 是 Nginx 中一个非常核心的配置,关于Location,举个简单的配置例子:
server {
listen 80;
server_name 10.0.7.115;
location / {
root /data/app/;
index index.html;
}
}
当访问 http://10.0.7.115:80
的时候,返回的是 /data/app/index.html
文件。
location [ = | ~ | ~* | ^~ ] uri { ... }
重点看方括号中的 [ = | ~ | ~* | ^~ ]
,其中 |
分隔的内容表示你可能会用到的语法,其中:
location = /test {
return 200 "hello";
}
例如:
/test ok
/test/ not ok
/test2 not ok
/test/2 not ok
location ~ ^/test$ {
[configuration]
}
例如:
/test ok
/Test not ok
/test/ not ok
/test2 not ok
location ~* ^/test$ {
[configuration]
}
例如:
/test ok
/Test ok
/test/ not ok
/test2 not ok
location ^~ /images/ {
[configuration]
}
例如:
/images/1.gif ok
/
表示通用匹配:
location / {
[configuration]
}
例如:
/index.html ok
location /test {
[configuration]
}
例如:
/test ok
/test2 ok
/test/ ok
二、匹配顺序
总结:
/document
示例一:
配置:
server {
location /doc {
[ configuration A ]
}
location /docu {
[ configuration B ]
}
}
匹配结果:
configuration B
注:虽然 /doc
也能匹配到,但 在顺序上,前缀字符串顺序不重要,按照匹配长度来确定
。
示例二:
server {
location ~ ^/doc {
[ configuration A ]
}
location ~ ^/docu {
[ configuration B ]
}
}
匹配结果:
configuration A
注:虽然 ~ ^/docu
也能匹配到,但 正则表达式则按照定义顺序
。
示例三:
server {
location ^~ /doc {
[ configuration A ]
}
location ~ ^/docu {
[ configuration B ]
}
}
匹配结果:
configuration A
注:虽然 ~ ^/docu
也能匹配到,但 ^~
的 优先级更高
。
示例四:
server {
location /document {
[ configuration A ]
}
location ~ ^/docu {
[ configuration B ]
}
}
匹配结果:
configuration B
注:虽然 /document
也能匹配到,但 正则的优先级更高
。
三、root 与 alias 的区别
location /i/ {
root /data/w3;
}
当请求 /i/top.gif
,/data/w3/i/top.gif
会被返回。
location /i/ {
alias /data/w3/images/;
}
当请求 /i/top.gif
,/data/w3/images/top.gif
会被返回。
两者的区别:
四、server 和 location 中的 root
server 和 location 中都可以使用 root,举个例子:
server {
listen 80;
server_name 10.0.7.115;
root /data/app/;
location / {
root /data/web/;
index index.html;
}
}
简单的来说,就是 就近原则
,如果 location
中能匹配到,就是用 location
中的 root
配置,忽略 server
中的 root
,当 location
中匹配不到的时候,则使用 server
中的 root
配置。
原文地址:https://blog.csdn.net/wangzhongshun/article/details/126434539
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_40760.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!