nginx路径后的斜杠
路径末尾有无 / 的区别
proxy_pass 路径结尾有无 / 的区别:
1、不带 /
location /api/ {
proxy_pass https://www.test.com;
}
这种情况下,Nginx会将会按照原始路径进行拼接
例如:
请求:http://www.aaa.com/api/getData 会被转发到:https://www.test.com/api/getData (注意: 转发后的路径中包含匹配路径)
2、带 /
location /api/ {
proxy_pass https://www.test.com/;
}
这种情况下,Nginx会将请求路径去掉匹配的部分(这里指的就是 /api/),然后将路径剩余部分拼接到proxy_pass 后面的路径
例如:
请求:http://www.aaa.com/api/getData 会被转发到:https://www.test.com/getData (注意: 转发后的路径中不包含匹配路径)
location 是否以 / 结尾的区别
1、不带 /
location /api {
proxy_pass https://www.test.com;
}
这个配置会匹配以/api
开头的所有请求,例如:/api、/api/index、 /api/index/getxx
2、带 /
location /api/ {
proxy_pass https://www.test.com;
}
这个配置会匹配/api/
开头的所有请求,例如:/api/index、 /api/index/getxx
等,但是不会匹配仅/api
的请求
静态资源映射时,root
和 alias
的区别
root
root
location /images/ {
root /var/www/html;
}
root
设置为 /var/www/html
,请求 /images/pic.jpg
会映射到 /var/www/html/images/pic.jpg
。
alias
location /images/ {
alias /var/www/static;
}
alias
设置为 /var/www/static
,请求 /images/pic.jpg
会映射到 /var/www/static/pic.jpg
。
alias 会将请求路径中匹配路径的后半部分直接拼接到alias路径后
🚀root 指令的路径末尾是否有 /
,在大多数情况下没有区别。nginx 会自动处理路径末尾的 /
alias 指令后如果是文件夹最好加上 /
总结
root 的处理结果是: root 路径 + location 路径
alias 的处理结果是: 使用 alias 路径 替换 location 路径
alias 是一个目录别名的定义,root 则是最上层目录的含义。
如果 location 路径是以 / 结尾,则 alias 也必须是以 / 结尾,root 没有要求