一、root声明和alias声明
当我们以 http://172.17.0.2:8080/a/b/c.html 访问nginx时
首先nginx会根据172.17.0.2:8080定位虚拟主机,剩余部分/a/b/c.html,我们将其称为path
然后nginx再去匹配location,如果匹配中/a,则称/a,为path1
剩余部分/b/c.html,则称/b/c.html,为path2
了解了什么是path,什么是path1,什么是path2后,此时如果我们使用root声明
location /a {
root html/;
}
表示在root指定的html/目录下找path1+path2,即path=/a/b/c.html
而如果我们使用alias 声明
location /a {
alias html/;
}
表示在alias指定的html/目录下找path2,即找/b/c.html
这就是这两个声明的区别
二、index命令
当我们使用root声明和alias声明时,常常也会使用到index命令
location /a {
alias html/;
index aa.html;
}
什么时候会触发index命令呢?
url 以 “/” 结尾时,如:http://172.17.0.2:8080/a/,指的是一个目录,nginx认为用户没有指定文件,会访问index指定的文件aa.html
url 不是以 “/” 结尾,http:/172.17.0.2:8080/a,认为它是个文件,尝试打开这个文件,此时index命令不启用
三、proxy_pass命令
将请求路径转给第三方
location /a {
proxy_pass http://172.17.0.3:8080/;
}