在nginx中,root和alias都可以代理静态资源,那么他们两个有什么区别呢?在什么情况下使用什么呢。
初识
root和alias都可以在定义在location模块中,都是用来请求资源的真实路径的,如下:
location / {
root html;
index index.html index.htm;
}
上面含义是什么呢,就是代理了nginx家目录下的html目录,默认访问index、index.html或者index.htm。
nginx在location中配置root
location /xiaochen/ {
root html/ceshi/; # 需要注意,如果这里前面添加了/,那就代表的是服务器实际路径
}
然后我们准备下测试信息:
[root@Server-i-xfe2u1niht nginx]# mkdir -pv html/ceshi/xiaochen
mkdir: created directory ‘html/ceshi’
mkdir: created directory ‘html/ceshi/xiaochen’
[root@Server-i-xfe2u1niht nginx]# echo "my name is xiaochen" > html/ceshi/xiaochen/index.html
[root@Server-i-xfe2u1niht nginx]#
当你用以下地址去访问的时候;
[root@Server-i-xfe2u1niht nginx]# curl http://10.0.0.20/xiaochen/index.html
my name is xiaochen
[root@Server-i-xfe2u1niht nginx]#
总结
可以发现,当在nginx
中使用root的时候,你实际访问之时,他的访问路径是:root
指定的值+location
指定的值。
nginx在location中配置alias
location /xiaochen_1/ {
alias html/ceshi/xiaochen_1/;
}
准备测试环境:
[root@Server-i-xfe2u1niht nginx]# mkdir -pv html/ceshi/xiaochen_1
mkdir: created directory ‘html/ceshi/xiaochen_1’
[root@Server-i-xfe2u1niht nginx]# echo 'my name is xiaochen_1' > html/ceshi/xiaochen_1/index.html
[root@Server-i-xfe2u1niht nginx]# ./sbin/nginx -s reload
使用以下方式来访问:
[root@Server-i-xfe2u1niht nginx]# curl http://10.0.0.20/xiaochen_1/index.html
my name is xiaochen_1
[root@Server-i-xfe2u1niht nginx]#
总结
可以发现,当在nginx
中使用alias
的时候,无论你location
中配置的值是什么,他都会转到alias
后面配置的路径中,和location
无关。