nginx location的配置、root和alias的区别

前言

最近在用到location的时候发现这块配置很微妙,需要记录下

1
2
3
4
5
6
#第一种情况 /proxy/ 后面更上/,代表完全匹配,如访问/proxy123/,则匹配失败
location /proxy/ {
proxy_pass http://127.0.0.1:8001/;
}
#proxy_pass 最后跟上/线,真实访问路径:http://test.com/
#proxy_pass 最后不跟上/线,真实访问路径:http://test.com/proxy

root和alias的区别

1
2
3
4
5
6
7
8
9
10
location  /test/ {
root /www/root/html/;
#寻找位置:/www/root/html/test/index.html
}

location /test/ {
alias /www/root/html/;
#寻找位置:/www/root/html/index.html
}

所以两个最直观的区别就是 root会+location的路径,alias不会

403问题

​ 有时访问会出现403

  • 首先确认nginx是否root用户,在/etc/nginx/nginx.conf中修改 user root;
  • 其次确认访问的路径权限是否777,使用命令修改chmod -R 777 /test,递归修改目录下所有文件权限