本文详细解析了Nginx中root与alias指令的区别,包括它们如何处理location后的URI,以及如何设置资源路径。同时介绍了如何使用index指令访问首页,并展示了如何根据HTTP返回码进行重定向。
root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。
root的处理结果是:root路径+location路径
alias的处理结果是:使用alias路径替换location路径
alias是一个目录别名的定义,root则是最上层目录的定义。还有一个重要的区别是alias后面必须要用"/"结束,否则会找不到文件的。。。而root则可有可无
使用alias标签的目录块中不能使用rewrite的break
(1)以root方式设置资源路径 实际路径是root+请求路径。
语法:root path;
默认:root html;
配置块:http、server、location、if
location /download {
root /etc/nginx;
}
请求的URI为https://10.21.144.110/download/,web服务器返回/etc/nginx/download/index.html的内容
location /installpack {
root /etc/nginx;
}
请求的URI为https://10.21.144.110/installpack/10.21.144.110/diagent_setup32.zip,web服务器返回/etc/nginx/installpack/10.21.144.110/diagent_setup32.zip的内容
(2)以alias方式设置资源路径 实际路径是alias后的,不包含请求路径
语法:alias path;
配置块:location
location /download {
alias /etc/nginx/download/;
}
请求的URI为https://10.21.144.110/download/,web服务器返回/etc/nginx/download/index.html的内容
(3)访问首页
语法:index file...;
默认:index index.html;
配置块:http、server、location
访问站点的URI是/,这时一般返回首页,index后可以跟多个文件参数,Nginx会按照顺序访问这些文件
location / {
root path;
index.html htmlindex.php 、index.php;;
}
Nginx首先访问path/index.html,若可以访问直接返回文件内容结束请求,否则尝试返回path/htmlindex.php内容,依次类推
(4)根据HTTP返回码重定向
语法:error_page code[code...][=|=answer-code]uri|@named_location
配置块:http、server、location、if
error_page 404 = @not_found
location @not_found {
rewrite http://google.com;
}
#上述的作用是如果访问没有匹配的url会触发404指令,然后就匹配到@not_found 这个 location上。