一直在想类似于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是否满足业务权限(比如开会员什么,当然你可以缓存起来)
个性个人域名
- 要求用户将自己需要绑定的通过cname指向我们的域名
- 将nginx上所有的其他域名都rewrite到我们网站的专门路径上
比如 blog.xxx.com 重写为 blog.c7d8.com/userdomian/blog.xxx.com/$request_uri
- 通过程序获取这一段域名,并且根据需要进行跳转