zhouli 发表于 2015-9-16 13:18:02

nginx虚拟目录(alias与root的区别)

原文地址:http://blog.sina.com.cn/s/blog_6c2e6f1f0100l92h.html
nginx虚拟目录(alias与root的区别)



今天配置awstats,awstats创建出的文件目录在/home/awstats下,在nginx中加入配置后狂报404,发现还是忽略了root和alias的区别,特将修改配置记录如下:
1.失败:server {
      server_nametest.com;
      charset utf-8,GB2312;
      indexindex.html;

      location / {
      root html;
      access_log logs/access.log main;
         }

      location ~ ^/awstats/ {
      root/home/awstats/;
      indexindex.html;
      access_log off;
      error_log off;
      charset gb2312;
      }


2.失败: server {
      server_nametest.com;
      charset utf-8,GB2312;
      indexindex.html;

      location / {
      root html;
      access_log logs/access.log main;
         }

      location ~ ^/awstats/ {
      alias/home/;
      indexindex.html;
      access_log off;
      error_log off;
      charset gb2312;
      }


3.成功: server {
      server_nametest.com;
      charset utf-8,GB2312;
      indexindex.html;

      location / {
      root html;
      access_log logs/access.log main;
         }

      location ~ ^/awstats/ {
      alias/home/awstats/;
      indexindex.html;
      access_log off;
      error_log off;
      charset gb2312;
      }

4.成功: server {
      server_nametest.com;
      charset utf-8,GB2312;
      indexindex.html;

      location / {
      root html;
      access_log logs/access.log main;
         }

      location ~ ^/awstats/ {
      root/home/;
      indexindex.html;
      access_log off;
      error_log off;
      charset gb2312;
      }

从以上例子很明显看出,还是对root和alias的概念搞混了~
1.      location ~ ^/awstats/ {
      root/home/awstats/;
访问:http://test.com/awstats/ 实际访问的是/home/awstats/awstats/

2.      location ~ ^/awstats/ {
      alias/home/
访问:http://test.com/awstats/ 实际访问的是/home/

3.      location ~ ^/awstats/ {                        #使用alias时目录名后面一定要加“/”
      alias/home/awstats/;

访问:http://test.com/awstats/ 实际访问的是/home/awstats/

4.      location ~ ^/awstats/ {
      root/home/;访问:http://test.com/awstats/ 实际访问的是/home/awstats/
借用ayou老师的一句话:
一般情况下,在location /中配置root,在location /other中配置alias是一个好习惯
页: [1]
查看完整版本: nginx虚拟目录(alias与root的区别)