码迷,mamicode.com
首页 > 其他好文 > 详细

Nginx关于个性二级域名的配置

时间:2015-03-01 18:35:29      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:

在很多地方,比如说博客网站。我们经常可以会通过网站提供的配置功能,实现个性化的属于个人的二级域名,比如说http://cevin15.oschina.net。当然,OSC的博客目前还没有这个功能。

最近遇到个差不多的需求,网上看了下别人的实现方式,写得不太清楚,自己第一遍即使看懂了,回头看第二遍估计还是不懂。还是要自己测试下,然后记录记录。于是玩了下本地的Nginx,研究怎么去实现这种个性二级域名。

第一时间想到的是通过Nginx的rewrite来实现。配置如下:

server {
        listen       80;
        server_name  *.mydomain.com;
        if ( $host ~* (\b(?!www\b)\w+)\.\w+\.\w+ ) {
            set $subdomain $1;
        }
        location / {
            rewrite ^/$ http://www.mydomain.com/$subdomain last;
        }
    }

其中的if,是用于获取二级域名的变量值。

重载Nginx的配置,测试。发现跳转是正常了,但是浏览器的url也跟着变成:http://www.mydomain.com/$subdomain。

这样就没用了,起不到我们需求的酷酷的二级域名功能。

浏览器的url会发生变化的原因是,我们在使用rewrite时,使用了全路径的配置。

既然下面这种写法不行:

rewrite ^/$ http://www.mydomain.com/$subdomain last;

那就换回来这种写法:

rewrite ^/$ /$subdomain last;

再加上nginx的反向代理功能:

proxy_pass http://www.mydomain.com/;

就可以实现很酷的二级域名功能了。

全部配置如下:

server {
        listen       80;
        server_name  *.mydomain.com;
        if ( $host ~* (\b(?!www\b)\w+)\.\w+\.\w+ ) {
            set $subdomain $1;
        }
        location / {
            rewrite ^/$ /$subdomain last;
            proxy_pass http://www.mydomain.com/;
        }
    }

这是目前想到的二级域名实现方式,想法其实很简单,缺陷当然也有,就是在rewrite上面。如果url有多种路径规则,则需要一一进行配置。 

如果以后有更好的实现方式,再来更新。待续……

Nginx关于个性二级域名的配置

标签:

原文地址:http://my.oschina.net/cevin15/blog/381033

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!