文章目录
root和alias的区别
因为最近在整网站,我现在有个需求就是当用户访问
www.wh.com
跳转到门户网站
,访问www.wh.com/admin
跳转到后台管理系统网站
。我们该如何使用Nginx来完成呢,很重要的一点就是需要搞懂root和alias以及try_files的作用
直接上Nginx的配置文件进行分析:
location / {
root html/dist;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
- root html/dist;:
此行设置网站根目录的路径为 html/dist。
当请求根路径 / 时,将在 html/dist 目录中查找相应的文件。
server {
listen 9001;
server_name www.wh.com;
location /hello {
root /usr/local/var/www/;
}
}
- 当用户请求
www.wh.com/hello/
的时候,服务器返回的地址就是/usr/local/var/www/hello/index.html
root的处理结果是:root路径+location路径
location ^~ /admin {
alias /usr/local/nginx/html/backup/;
index index.html;
try_files $uri $uri/ /admin/index.html;
}
- 当用户在请求www.wh.com/admin时,服务器返回的地址应该是/usr/local/nginx/html/backup/index.html
alias的处理结果是:使用alias路径替换location路径
- try_files $uri $uri/ /admin/index.html;
此行定义了文件的查找顺序,它将依次查询请求的文件或目录。- 首先尝试直接匹配请求的文件或目录
$uri 是一个内置变量,表示当前请求的 URI,即/admin
。
如果请求为/admin
,则尝试查找/usr/local/nginx/html/backup/index.html
)。 - 如果找不到匹配的文件或目录,尝试查找同名的目录
如果未找到该文件,则尝试查找目录$uri/
,即/admin/ 目录
。
即尝试查找/usr/local/nginx/html/backup/admin/
) - 如果以上两步都失败,则返回 /admin/index.html。
- 首先尝试直接匹配请求的文件或目录