Nginx中alias与root的区别
一、区别
Nginx指定文件路径有两种方式root和alias,这两者的用法区别在于对URI的处理方法不同。
示例1:
alias
location /i/{
alias /usr/local/nginx/html/admin/;
}
#若按照上述配置的话,则访问/i/目录里面的文件时,ningx会自动去/usr/local/nginx/html/admin目录找文件。
root
location /i/ {
root /usr/local/nginx/html/admin;
}
#若按照这种配置的话,则访问/i/目录下的文件时,nginx会去/usr/local/nginx/html/admin/i下找文件。
示例2:
alias
location /images/ {
alias/data/w3/images/;
}
该实例中alias设置等价于root设置。
root
location /images/ {
root /data/w3;
}
备注:
(1)、alias是一个目录别名的定义,root则是最上层目录的定义。
(2)、还有一个重要的区别是alias后面必须要用“/”结束,否则会找不到文件的。而root则可有可无。
二、配置实验
1、修改nginx.conf配置文件如下内容
server {
listen 80;
server_name www.jason3.com;
access_log logs/access.log main;
location /i {
index index.html;
alias/usr/local/nginx/html/admin;
}
location ~ ^/i/(.+\.(?:gif|jpe?g|png))${
alias /usr/local/nginx/html/admin/$1;
}
2、页面根目录/usr/local/nginx/html/admin设置图片及index.html页面。
3、完成配置后启动nginx服务。访问如下结果显示:
官方解释如下:
root命令
Syntax: root path;
Default:
root html;
Context: http, server, location, if in location
Sets the root directory forrequests. For example, with the following configuration
location /i/ {
root /data/w3;
}
The /data/w3/i/top.gif filewill be sent in response to the “/i/top.gif” request.
The path value can containvariables, except $document_root and $realpath_root.
A path to the file isconstructed by merely adding a URI to the value of the root directive. If a URIhas to be modified, the alias directive should be used.
alias命令
Syntax: alias path
;
Default: ―
Context: location
Definesa replacement for the specified location. For example, with the followingconfiguration
location/i/ {
alias /data/w3/images/;
}
onrequest of “/i/top.gif”, the file /data/w3/images/top.gif will be sent.
Thepath value can contain variables, except $document_root and $realpath_root.
Ifalias is used inside a location defined with a regular expression then suchregular expression should contain captures and alias should refer to thesecaptures (0.7.40), for example:
location~ ^/users/(.+\.(?:gif|jpe?g|png))$ {
alias /data/w3/images/$1;
}
Whenlocation matches the last part of the directive’s value:
location/images/ {
alias /data/w3/images/;
}
itis better to use the root directive instead:
location/images/ {
root /data/w3;
}