一直在想类似于csdn这样的博客网站是如何实现用户自定义域名的,最近发现可用使用NGINX与程序联合达到这个目的

常规的用户个人博客地址为 blog.csdn.net/qq_22841811/article/details/67369530

其中qq_22841811为用户名,那我们可以使用nginx的url rewrite将qq_22841811.blog.csdn.net/article/details/67369530 重写为 blog.csdn.net/qq_22841811/article/details/67369530即可达到目的。 nginx配置可参考如下

server {
        server_name *.blog.csdn.net;
        listen 80 ;
        access_log /var/log/nginx/access.log vhost;
        location / {
               if ( $host ~* (.*)\.(.*)\.(.*)\.(.*) ) {
                       set $domain $1;
                }
                proxy_pass http://blog.csdn.net/$domain/$request_uri;
        }
}

当然,如果你需要像csdn一样需要会员才能支持自定义域名,那你可以配置一个专门的链接,比如 proxy_pass http://blog.csdn.net/userdomain/$domain/$request_uri; 接下来就需要在这个链接里面去判断domain是否满足业务权限(比如开会员什么,当然你可以缓存起来)


个性个人域名

  1. 要求用户将自己需要绑定的通过cname指向我们的域名
  2. 将nginx上所有的其他域名都rewrite到我们网站的专门路径上
比如 blog.xxx.com 重写为 blog.c7d8.com/userdomian/blog.xxx.com/$request_uri
  1. 通过程序获取这一段域名,并且根据需要进行跳转