nginx 配置中的/
一.proxy_pass
路径结尾有无/
的区别:
-
不带斜杠
/
location /api/ { proxy_pass https://www.test.com; }
这种情况下,Nginx会将会按照原始路径进行拼接
例如:
请求:http://www.aaa.com/api/getData 会被转发到:https://www.test.com/api/getData (注意: 转发后的路径中包含匹配路径)
-
带斜杠
/
location /api/ { proxy_pass https://www.test.com/; }
这种情况下,Nginx会将请求路径去掉匹配的部分(这里指的就是
/api/
),然后将路径剩余部分拼接到proxy_pass
后面的路径例如:
请求:http://www.aaa.com/api/getData 会被转发到:https://www.test.com/getData (注意: 转发后的路径中不包含匹配路径)
二.location
是否以斜杠/
结尾的区别
-
不带斜杠
/
location /api { proxy_pass https://www.test.com; }
这个配置会匹配以
/api
开头的所有请求,例如:/api、/api/index、 /api/index/getxx
-
带斜杠
/
location /api/ { proxy_pass https://www.test.com; }
这个配置会匹配
/api/
开头的所有请求,例如:/api/index、 /api/index/getxx
等,但是不会匹配仅/api
的请求
三. 静态资源映射时,root
和 alias
的区别
root
- 作用范围:
root
指令设置一个根目录,后续的 URI 会相对于这个根目录进行解析。 - 使用场景:适用于需要将 URI 直接映射到文件系统路径的情况。
location /images/ {
root /var/www/html;
}
root
设置为/var/www/html
,请求/images/pic.jpg
会映射到/var/www/html/images/pic.jpg
。root 会 将匹配路径直接附加到目录后面
alias
location /images/ {
alias /var/www/static;
}
alias
设置为/var/www/static
,请求/images/pic.jpg
会映射到/var/www/static/pic.jpg
。
alias
会将请求路径中匹配路径的后半部分直接拼接到alias路径后
注意:root 指令的路径末尾是否有 /
,在大多数情况下没有区别。Nginx 会自动处理路径末尾的 /