注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

itoedr的it学苑

记录从IT文盲学到专家的历程

 
 
 

日志

 
 

Nginx 二级子域名完美方案(转)  

2013-05-19 07:51:48|  分类: nginx编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

        对于批量添加虚拟主机的需求,Apachevhost_alias 模块帮忙。Nginx 呢?其实神马都不需要,同样可以实现 Nginx 二级域名匹配子文件夹,且不匹配 "www",但可以匹配包含 "www" 的子域名。

        首先看看目前网上搜到的方法。

if ( $host ~* (.*)\.(.*)\.(.*)) {
    set $subdomain $1;
}
location / {
    root  html/$subdomain;
    index index.html index.php;
}

          上面的 "~*" 表示不区分大小写,然后就是匹配任何 "xxx.xxx.xxx" 类型的网址,最后就悲剧了,不仅匹配了 "www.yourdomian.com" 甚至连 "我艹.$!@.com" 这类网址也匹配了。

         这是一个正则问题。建议先阅读 《正则表达式30分钟入门教程》《Nginx Location 指令基础》,然后往下看...

完美解决方案

if ( $host ~* (\b(?!www\b)\w+)\.\w+\.\w+ ) {
    set $subdomain /$1;
}
location / {
    root /home/wangyan/public_html$subdomain;
    index index.html index.php;
}

          效果,不匹配 "www" 但可以匹配包含 "www" 的子域名。使用方法很简单,请将上面代码复制到 server {} 标签中,然后重启nginx即可。



  评论这张
 
阅读(189)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017