Nginx虚拟目录alias和root两种配置方式区别

root
- nginx中root指令的地址,其实是替换了匹配后的url中的host。
- root指令最后的斜杠可加可不加。多个斜杠在nginx中相当于一个~
- 如果不匹配location,则寻找更外层的root做替换(外层没有location会使用nginx默认的一个location)

alias
- alise并不是替换host,而是替换匹配部分的host,别名一个路径(也就是说,path目录不需要真实存在alias指定的目录中)
- alise指令后面必须加 / http://test.com/aa/aa eg: alise /www/aa/ 如果alise中aa后面没有 / 则会匹配 。 http://test.com/aaaa
-

通常最佳实际是配置一个项目的根root,其他的文件夹则使用alias

如下一例:
server {
          listen 80;
          server_name www.wangshibo.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;
     }

 }

Tip:

  1. alias指定的目录是准确的,即location匹配访问的path目录下的文件直接是在alias目录下查找的;
  2. root指定的目录是location匹配访问的path目录的上一级目录,这个path目录一定要是真实存在root指定目录下的;

扩展

location配置

1. 语法规则(按优先级)

=        表示精确匹配,优先级最高

^~      表示uri以某个常规字符串开头,用于匹配url路径(而且不对url做编码处理,例如请求/static/20%/aa,可以被规则^~ /static/ /aa 匹配到(注意是空格))

~        表示区分大小写的正则匹配

~*      表示不区分大小写的正则匹配

!~       表示区分大小写不匹配的正则

!~*     表示不区分大小写不匹配的正则

/         表示通用匹配,任何请求都会匹配到
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值