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 目录 (里面是一些静态资源)