Linux:nginx alias和root处理静态资源区别

nginx指定文件路径有两种方式:alias和root;

使用方法和作用域如下:

【root】
语法      root path;
默认值    root html; #代表nginx目录下html文件夹
作用域    http、server、location、if

【alias】
语法      alias path; #path结尾一定要加以“/”结束
作用域    location

root和aligs区别:

1)alias指定的目录是准确的,location替换为aligs路径,即location匹配到的path路径下的文件在aligs目录下是可以找到的;
2)root指定的目录是location匹配访问path路径的上一级目录,这个path目录要真实存在在root路径下;
3)使用alias的location代码块中,不能存在rewrite的break;alias路径最后必须带上“/”;
4)alias的location匹配的path路径中,如果最后不加“/”,访问的时候会自动加上“/”;如果path后面加上“/”,访问的时候路径最后必须加上“/”,否则会保存
5)root的location匹配的path路径中,加不加“/”都可以

eg:假如访问路径都是http://www.test.com/test/aaa.html

eg1:

location /test/ {
    alias /home/test/;
}
访问http://www.test.com/test/aaa.html 实际为 /home/test/aaa.html

改为root方式:
location /test/ {
    root /home/;
}
访问http://www.test.com/test/aaa.html 实际为 /home/test/aaa.html

.eg2:访问路径和文件路径不一致

location /test/ {
    alias /home/web/;
}
访问http://http://www.test.com/test/aaa.html 实际为 /home/web/aaa.html

如果改为root方式:
先通过软连接,将/home/web/ 软连接到/home/test/目录
ln -s /home/test/ /home/web/
location /test/ {
    root /home;
}

建议:1.location / 使用root;2.location /path 使用alias;

如下:
server {
   listen 80;
   server_name www.test.com;
   index index.html index.php index.htm;
   access_log /usr/local/nginx/logs/image.log;

   location / {
        root /var/www/html;
   }

   location /haha {//匹配的path目录haha不需要真实存在alias指定的目录中
       alias   /var/www/html/ops/;//后面的"/"符号一定要带上
       rewrite ^/opp/hen.php(.*)$ /opp/hen.php?s=$1 last;
       # rewrite ^/opp/(.*)$ /opp/hen.php?s=$1 last;
   }

   location /wang {//匹配的path目录wang一定要真实存在root指定的目录中(就/var/www/html下一定要有wang目录存在)
      root /var/www/html;
   }

}

=============================再看下面一例=============================
[root@web01 vhosts]# cat www.kevin.com.conf
server {
  listen      80;
  server_name www.test.com;
     
  access_log  /data/nginx/logs/www.kevin.com-access.log main;
  error_log  /data/nginx/logs/www.kevin.com-error.log;
     
  location / {
      root /data/web/kevin;
      index index.php index.html index.htm;
  }
 
  location /document/ {
      alias /data/web/document/;
  }
 
}
 
 
[root@web01 vhosts]# ll /data/web/
total 4
drwxrwxr-x 2 app app   33 Nov 22 10:22 document
drwxrwxr-x 4 app app  173 Sep 23 15:00 kevin
 
如上配置后,则:
访问http://www.kevin.com/admin   就会找到/data/web/kevin/admin目录
访问http://www.kevin.com/document  就会找到/data/web/document 目录 (里面是一些静态资源)

 

你可能感兴趣的:(Linux,nginx,aligs,root)