开发者社区> 问答> 正文

【纠正论坛错误】Nginx多级域名最佳解决方案

【纠正论坛里的错误,以免误导新人】Nginx官方文档已说明不宜使用 If
详见: http://wiki.nginx.org/Pitfalls#Using_If
http://wiki.nginx.org/IfIsEvil


用If的效率是低下的,因为Nginx有更好的解决方案,所以没有必要用If


--------------------------- Mtimer 的分割线 ------------------------------------


你首先要知道Nginx配置文件里Server段的执行顺序,很简单:
1.明确的server_name ,比如 www.mtimer.cn blog.mtimer.cn
2. *通配符,比如 *.mtimer.cn
3. 第一个范围广的正则表达式!!忽略其余正则  比如 ~^(?<sub>[a-zA-Z0-9-_] )\.mtimer\.cn$;


--------------------------- 解决方案的分割线 ---------------------------------------


我把多级域名 分为 二级域名 和 其他
一般主要处理二级域名


一个server段


server {

        listen       80;
        server_name  ~^(?<sub>[a-zA-Z0-9-_] )\.mtimer\.cn$;
        index index.html index.htm index.php;
        root /home/www/mtimer18;
        。。。。。
}


上面这个处理所有【未明确定义的】二级域名,并把二级域名名称赋值给 sub,
这样如果你的每个二级域名的根目录不一样,你就可以这样写  root /mtimer/www/$sub;




至于用不到的三级及以上域名,你可以用一个server段跳转到网站首页

server {
    listen       80;
    server_name  _;
    return     301 http://www.mtimer.cn$request_uri;
}


再完美一些可以再加个server段,使mtimer.cn跳转到 www.mtimer.cn

server {
  server_name mtimer.cn;
  return 301 $scheme://www.mtimer.cn$request_uri;
}


-----------------------------完整的一个Nginx Vhost配置【注意:域名要改成自己的】----------------------------------


server {
        listen       80;
        server_name  www.mtimer.cn;
        index index.html index.htm index.php;
        root /home/www/test;
}
server {
        listen       80;
        server_name  ~^(?<sub>[a-zA-Z0-9-_] )\.mtimer\.cn$;
        index index.html index.htm index.php;
        root /home/www/$sub;
        。。。。。
}
server {
        listen       80 default_server;
        server_name  _;
        return       301 http://www.mtimer.cn$request_uri;
        。。。。。
}
server {
          server_name mtimer.cn;
          return 301 $scheme://www.mtimer.cn$request_uri;
          。。。。。
}



当然,If不是不能用,但要是在完全理解的基础上和必要时才用。



展开
收起
kiddo90 2013-08-16 19:53:41 12815 0
8 条回答
写回答
取消 提交回答
  • 您的帖子很精彩!希望很快能再分享您的下一帖!
    2013-11-16 12:53:54
    赞同 展开评论 打赏
  • 元芳,阿里云云栖论坛总版主,phpwind官方论坛管理员,社区论坛领域应用专家。长期活跃在社区论坛建站领域,对各类社区论坛程序颇有研究!乐于交友,热心助人,以帮助和服务站长朋友为宗旨,帮助数以千计的站长朋友顺利建站!
    学习了!
    2013-11-15 19:21:25
    赞同 展开评论 打赏
  • 蛋疼。
    2013-11-15 16:46:39
    赞同 展开评论 打赏
  • 你懂的!
    2013-11-15 10:59:20
    赞同 展开评论 打赏
  • Re【纠正论坛错误】Nginx多级域名最佳解决方案
    好东西,收藏下
    2013-11-14 21:54:13
    赞同 展开评论 打赏
  • 嗯,期待高手出现,欢迎纠正
    2013-08-16 20:33:25
    赞同 展开评论 打赏
  • 这个要学习下
    2013-08-16 20:08:41
    赞同 展开评论 打赏
  • 优秀文章-欢迎进行技术分享,感谢你的支持!
    2013-08-16 19:58:36
    赞同 展开评论 打赏
滑动查看更多
问答排行榜
最热
最新

相关电子书

更多
域名升级时代的数字品牌保护 立即下载
CentOS Nginx PHP JAVA 多语言镜像使用手 立即下载
CentOS Nginx PHP JAVA多语言镜像使用手册 立即下载