首页 > 其他 > 详细

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

时间:2015-03-01 18:34:48      阅读:264      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!