【科普教程】周末爆肝两天,万字长文,手把手教你配置CSDN主页的独特域名(保姆级教程,建议收藏)
相信经常在CSDN上更新博文的博主,一定有这么痛点:“CSDN分配的给我的主页地址太low了,我的博文这么牛皮,难道就不值得有个专属的域名访问吗?”
比如像,yyds.recan-li.cn (Recan YYDS)就能够访问到我的CSDN主页,多么87V5!
你要这么说,CSDN官方还真提供了类似这样的服务,不知道你留意过没有?
你试下把鼠标移到个人头像的图标上,有个【内容管理】,进去之后找到有一项【自定义域名】配置。不过不得不说,这个配置真的很鸡肋,名字不能太短,而且你还是得和CSDN的名字绑定,最可恶的是,你选好了名字之后,一点【就是它了】,居然自动给你跳转到购买会员页面,言下之意,没钱你玩个jj,所以你懂的!
OK,扯了这么多,有没有什么办法,绕过CSDN,搞一个高大上的域名地址呢?方法当然有,且听下文分解,保姆级教程,手把手教你配置,你也可以拥有独一无二且牛逼哄哄的自定义CSDN域名。
要达到类似开头说的功能,访问 yyds.recan-li.cn 就能访问到自己的CSDN主页,你得具备以下几个条件:
购买云服务很简单,如果你仅仅是为了建站玩一玩自己的博客,配置选最低一点就好了,基本都够用。国内网络环境下,首推阿里云、腾讯云、华为云这些大厂的云服务器。
一般这种配置低的服务器,价格都是比较便宜的,碰到打折促销或者是新用户的下单,往往更加便宜,大概也就是100块一年吧。
购买这些云服务器基本都是傻瓜式0配置的,下单购买之后,即可在线自动配置,随后在你的购买账号下(比如我购买的是阿里云服务器,就在我的阿里云账户下),有个控制台,点进去就可以看到你购买的云服务器了,有登录密码、公网IP地址之类的重要信息。
一般来说,选购的云服务器都是没有运行界面的,只有命令行,可以通过SSH远程登录。
这里推荐Ubuntu的Linux发行版本,对初始用户还是比较友好的。
具体如何通过SSH登录服务器,这里就不叙述了,很容易就学会的。
再次强调下,这一步骤,主要为了获得一个具备公网IP访问的公有云服务器。
购买DNS域名,与购买云服务器类似,也可以选主流的阿里云、腾讯云、华为云等服务器上,当然如果你首次购买,建议你同样选择云服务器那个服务商,这样你就只需要登入一个账户就可以看到你的云服务器和DNS域名。
当然你可以单独选另一家服务商,比如我的就选了华为云的DNS域名。
购买,配置,登录都类似,只不过在勾选域名的时候,需要你指定你的域名后缀,不同类型的后缀价格不一样,而且有可能你想用的域名后缀已经被人选了,这也是为何会有【域名投资】这种玩法的出现,就是疯狂去抢注域名,等别人要用的时候,只能向你购买转让,毕竟域名是唯一的。
我的域名服务(华为云)控制台界面,每个服务商提供的界面应该都是类似的。
再次强调下,这一步骤,主要为了获得一个具备你个人标识的【独一无二】的域名地址。
推荐个华为云域名服务,还真的很便宜:
域名建站专场域名购买域名优惠活动域名注册域名申请域名特惠网站建设-华为云
Apache2服务是什么,我先不做具体叙述,后面会详讲,这一步我主要先把Aapche2服务给搭起来。
在主流的Linux发行版里面,使用命令行就可以在线安装这个服务。
比如我使用的是Ubuntu Linux,它的安装命令就是:
sudo apt-get install apache2
注意如果你是普通用户的话,一定要使用sudo权限才能安装成功。
输完密码之后,根据提示就可以很顺利地把Apache2服务安装好。
下面开始配置Apache2服务,它的配置文件位于/etc/apache2/目录下:
配置过程中,我们有3个地方需要配置:ports.conf、sites-enabled、sites-available;
先说ports.conf的配置:
用vim打开它,默认它是监听80端口的,我们先把它注释掉,换成监听8101端口,这个端口就是专门为CSDN主页跳转使用的,因为80端口后面的nginx服务需要使用。
修改好的内容如下所示:
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf
#Listen 80
#csdn port
Listen 8101
Listen 443
Listen 443
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
再看site-enabled目录的配置,先进到这个目录,里面只有2个文件:
由于我们先不考虑ssl访问,所以ssl那个配置文件先不用动。
我们在这个目录下新建一个配置文件叫001-csdn.conf,里面的内容如下:
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/csdn/html
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/csdn_error.log
CustomLog ${APACHE_LOG_DIR}/csdn_access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
其中虚拟主机的端口号8101一定得是ports.conf里面配置的,要对得上,然后这个虚拟主机的站点文件是位于/var/www/csdn/html目录下。
下面我们就去这个站点目录编写我们的站点文件,也就是我们常说的html文件。
首先/var/www/csdn/html目录开始是不存在的,你需要使用以下命令重新建立:
mkdir -p /var/www/csdn/html
然后进到这个目录,创建一个叫index.html的文件,里面的内容如下:
蓝色部分替换成你的CSDN主页即可。
为什么文件名叫index.html,是因为一般的网络站点都会自动找站点目录下有没有index.html。
到这一步,Aapche2服务基本就配置好,我们需要使用以下命令重启下服务,使得刚刚的配置生效。
sudo /etc/init.d/apache2 restart (注意使用sudo权限)
提示成功之后,服务就跑起来了。
为了保险起见,我们可以确认下我们监听的8101端口是否处于监听状态。
使用如下命令查看:
netstat -an | grep 8101
当你看类似如下的LISTEN字样时,表示它处于正常的监听状态,也就证明我们的Aapche2服务已经跑起来了。
这时,如果你是本地服务器配置的,比如通过虚拟机工具搭建的服务器,有浏览器的话,输入http://127.0.0.1:8101就可以正常跳转到你的CSDN主页了。
但是我们购买的是云服务器,只有命令行,没有浏览器怎么办?你可以使用命令访问下,看下Apache2服务返回是否正常:
curl http://127.0.0.1:8101
如果你能看到这样的返回,就是把你上面的index.html的内容返回给你,证明运行是完全OK的。
但,我们不是买了具备公网IP的服务器吗?我们能不能通过公网IP访问而不是127.0.0.1这种回环IP访问呢?我们试试看,假如我的公网IP是8.23.56.89,那么访问地址就是:
curl http://8.23.56.89:8101 (记得更换成你自己的IP)
你会发现访问超时,无法访问,类似这样的错误。
或者使用windows的浏览器直接访问:http://8.23.56.89:8101 (记得更换成你自己的IP)
同样也是超时,无法访问。
为什么啊?
我的8101端口明明处于监听状态啊?
原因就是公网IP的端口映射问题。
你可以通过公网IP的22端口SSH登录你的服务器,那是因为云服务器提供商默认帮你把22端口映射好了。至于其他的一些端口,默认都是没有对外映射的,也就是说如果你想通过公网IP+端口的形式访问你的服务器,你必须保证这个端口有被映射出来。
如何配置端口映射,请看下一章节。
首先登录你的云服务器账户,你在哪个平台购买的就登录哪个。
下面以我的阿里云服务器为例来讲解,其他云服务器也类似,可能就是配置的菜单有所变化而已。
找到【云服务器ECS】,点进去:
找到【安全组】那一栏,点进去:
找到【配置规则】,点进去:
找到入【方向】-》【手动添加】,点进去:
之后,下面会多出一行端口配置,参考如下来填写:
因为后面也需要用到80端口,所以干脆在这里一同把80端口也给配置了,如下:
如上配置成功之后,我们再试下使用公网IP加端口的方式访问:
curl http://8.23.56.89:8101 (记得更换成你自己的IP)
可以访问成功了,证明8101的端口映射已经OK了。
或者使用windows的浏览器直接访问:http://8.23.56.89:8101 (记得更换成你自己的IP)
这时候应该可以正常跳到你的CSDN主页了。
OK,离最终的目标已经很接近了。
nginx服务是什么,这里先不做叙述,下文会详讲。
配置nginx服务,与配置Apache2服务类似,也需要先安装nginx服务。
在ubuntu下使用以下命令安装,注意使用sudo权限:
sudo apt-get install nginx
注意如果你是普通用户的话,一定要使用sudo权限才能安装成功。
输完密码之后,根据提示就可以很顺利地把nginx服务安装好。
下面开始配置nginx服务,它的配置文件位于/etc/nginx/目录下:
在这个目录下,有个nginx.conf配置文件,我们用vim打开它,发现它有一行:
include /etc/nginx/conf.d/*.conf;
所以它的配置文件,主要位于/etc/nginx/conf.d/目录下。
默认情况下,它里面是没有配置文件的,我们在这个目录下建立一个csdn的配置文件,取名叫001-csdn.conf(主要时后缀一定得是.conf),里面的配置内容如下:
# forward for CSDN
server {
listen 80;
server_name csdn.recan-li.cn blog.recan-li.cn yyds.recan-li.cn; # config domain
location / {
proxy_pass http://localhost:8101;
}
}
尤其要注意蓝色部分,
server_name那里就是配置你的需要由什么域名访问进来,这里可以写多个域名,每个域名以空格隔开;像我这里就写了三个,也就是说,正常配置好了之后,这三个域名都可以达到跳转的目的。这里的域名记得替换成你想使用的跳转域名,也就是你自己域名下的yyds.xxx.com。
下面那个proxy_pass就是设置跳转的代理服务,还记得我们上面配置Apache2的CSDN站点,使用的是8101端口,而localhost其实就是127.0.0.1;所以http://localhost:8101就是跳转到访问Apache2配置的CSDN站点去了。
这里还有端口的配置,nginx默认就是80端口,而且在上一步中我们已经把80端口的映射打开了,所以不用管它了。
配置好了之后,重启下nginx服务,使用以下命令;
sudo /etc/init.d/nginx restart (注意使用sudo权限)
提示成功表示服务重启成功了。
为了保险起见,我们还是查一下80端口是否正常处于监听状态,使用命令查看:
netstat -an | grep 80
当你看到图中类似的字样,表示监听正常。
既然nginx已经启动成功了,那我们试一下yyds.recan-li.cn跳转是否正常?
嗯哼?怎么回事?无法访问此界面?
仔细看下,原来是域名地址的解析还没配置,解析失败了!
不然,我怎么会说一定要有自己的域名呢?
这可是非常关键的一步,且看下文步骤。
配置DNS域名,需要登录你购买的域名解析的账户,是阿里云账户就登录阿里云。
下面我以华为云的为例,讲解下我的域名如何配置,其他云服务器提供商的配置方法都类似。
首先登录账户,进入到控制台界面,找到你的【域名注册】服务:
找到【解析】这一按钮,点进去:
找到【管理解析】,点进去:
找到【添加记录集】,点进去:
填写解析记录,参考如下:
这里我们可以取自己想取的名字,比如niupi等等,注意域名的后半部分都是确定的,那是由你购买的域名决定的。
选解析类型,选A类解析即可。
值里面填你的公网IP地址,保存就可以了。
配置好了之后,我们可以试下这个域名是否能正常解析到你配置的IP,使用cmd的ping命令:ping yyds.recan-li.cn
当你能看到你的公网IP的时候,证明解析成功了。
这里需要注意的是,配置好域名,它是不会立即就生效的,需要等点时间,一般5分钟之后,解析就可以。
把域名解析这最后一步搞定了,基本就已经全部配置好了。
我们来体验下:
OK,大家可以看到,成功达到跳转的目的,一起秀起来吧!
Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,是目前世界上使用最广泛的一种web server,它以跨平台,高效和稳定而闻名,可以运行在几乎所有广泛使用的计算机平台上。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。
Apache2是apache的2.x版本。
Apache是用C语言开发的基于模块化设计的web应用,总体上看起来代码的可读性高于php代码,它的核心代码并不多,大多数的功能都被分割到各种模块中,各个模块在系统启动时按需载入。
支持SSL技术,支持多个虚拟主机。Apache是以进程的Prefork模式(还有基于线程的Worker模式)为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。
简单一点就是:它是一个HTTP服务器**(WEB服务器)**,客户端(比如浏览器)可以通过HTTP协议访问它;并且它还支持虚拟主机技术,本教程中的配置就是利用这个虚拟主机技术进行配置。
nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。
简单来说,它就是:一个轻量级的HTTP服务器,但可以支持反向代理功能;本教程的配置就是利用了nginx的反向代理功能。可以参考后面的参考资料,有细讲nginx的反向代理是怎么回事。
我不是专业的,找了一篇讲得比较清晰的文章,大家可以参考下:
Nginx 和 Apache 区别最全详解? - 云+社区 - 腾讯云
域名(英语:Domain Name),又称网域,是由一串用点分隔的名字组成的Internet 上某一台计算机 或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。
由于IP地址 具有不方便记忆并且不能显示地址组织的名称和性质等缺点,人们设计出了域名,并通过网域名称系统(DNS,Domain Name System)来将域名和IP地址 相互映射 ,使人更方便地访问互联网 ,而不用去记住能够被机器直接读取的IP地址 数串。
尽管IP地址 能够唯一地标记网络上的计算机 ,但IP地址 是一长串数字,不直观,而且用户记忆十分不方便,于是人们又发明了另一套字符型的地址方案,即所谓的域名地址 。IP地址和域名是一一对应的,这份域名地址 的信息存放在一个叫域名服务器 (DNS,Domain name server)的主机内,使用者只需了解易记的域名地址,其对应转换工作就留给了域名服务器 。域名服务器就是提供IP地址和域名之间的转换服务的服务器。
本教程就是通过购买一个域名服务,然后自定义一个子域名来达到访问跳转主页的需求。
有了上面的预备知识,到这我来讲下实现自定义域名来跳转到CSDN主页的原理就比较容易了。
注意,等你真正理解并学会了这里的配置方法,你可以实现任意域名(当然域名后缀得是你的)跳转到你的任意社交主页,比如我的知乎主页 (zhihu.recan-li.cn ),我的github主页(github.recan-li.cn ),我的gitee主页(gitee.recan-li.cn )。
整一个跳转的原理如下图所示:
实现跳转主要有以下几步:
window.location.href="https://blog.csdn.net/szullc";
浏览器就会执行“地址重定向”,相当于重新把这个href的url放到浏览器的地址栏进行 跳转,这一步是html语法定义的,浏览器会自动执行的,无需人工干预;
为了进一步验证上面的原理,我们来尝试抓一下网络通讯报文,通过报文一看,便一目了然,任何跳转都逃不过网络报文的法眼。
这里需要用到的工具是wireshark抓包工具,关于wireshark工具,我这里可以简单介绍一下:
Wireshark(前称Ethereal)是一个网络封包 分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
网络管理员 使用Wireshark来检测网络问题,网络安全工程师 使用Wireshark来检查资讯安全相关问题,开发者使用Wireshark来为新的通讯协定除错,普通使用者使用Wireshark来学习网络协定的相关知识。当然,有的人也会“居心叵测 ”的用它来寻找一些敏感信息……
Wireshark不是入侵侦测系统(Intrusion Detection System,IDS )。对于网络上的异常流量行为,Wireshark不会产生警示或是任何提示。然而,仔细分析Wireshark撷取的封包 能够帮助使用者对于网络行为有更清楚的了解。Wireshark不会对网络封包 产生内容的修改,它只会反映出流通的封包资讯。 Wireshark本身也不会送出封包至网络上。
具体如何操作wireshak来抓取网络,大家可以参考这里的教程:
https://jingyan.baidu.com/article/8cdccae9385fe9315413cda6.html
这里我直接把我这边抓到的通讯报文放这里,
访问CSDN主页网络抓包-网络安全文档类资源-CSDN下载
感兴趣的可以拿来分析分析。
通过分析报文,发现真正的访问过程比我描述的步骤还要多一些,但大体还是按照我说的这个流程来的。
以下做一下简要的步骤分析:
如果你只有自己的域名,但没有自己的公网IP云服务器,那么你需要找一个别人有云服务器的朋友(比如我),帮你配置一个端口,然后把端口对应的Apache2服务站点的index.html跳转到你的CSDN主页,同时在nginx中将server_name配置成你的域名地址,这样就可以了。
说白了,就是重新走了一遍配置过程,这些配置对于云服务器是没有增加多大压力的,只不过增加了几个端口的跳转而已。
如果有此需求的朋友,可以关注我的主页,然后私信我,我帮你搞定。
对不起,如果没有域名的话,就只有通过IP加端口的方式来访问了;虽然通过域名最终也都是IP和端口进行通讯,但是使用IP和端口的方式,有个致命的弱点就是需要记住IP和端口,而这些东西都是一串数字,不具备很好的记忆条件。
所以,为了方便,还是建议你买一个域名,域名不贵但是很值。
如果不希望别人通过公网IP加端口就访问到我的服务,那是不是可以把配置的映射端口给删除了?这样会不会影响域名跳转呢?
这种情况下,你可以删掉这个端口的映射的。因为在我们的方案里面,是先通过80端口访问nginx服务,然后nginx根据传入的Host字段,再由代理转发到指定的端口(端口是由Apache2服务在监听的),由于nginx和Apache2是在同一台机器上,所以可以通过127.0.0.1:xxx的访问方式,也就是内网访问的方式来访问,这样这个xxx端口就不需要映射到公网,跳转也是没有问题的。
这里给大家提供几个排查的方法,也就是几个问题需要重点关注:
1) 安装好了Apache2,如果确保这个服务进程已经正常运行?
使用命令:ps -ef | grep apache2 确认下apache2的进程是否正常运行
2) 配置好了Apache2的CSDN站点,如果确保服务已经正常运行?
使用命令:netstat -an | grep 8101
端口号就使用你自己配置的那个,确认下端口是否处于LISTEN状态。
还可以使用curl http://127.0.0.1:8101
确认下index.html能否正常取到。
3) 配置好了Apache2的CSDN站点,通过公网加端口的方式无法访问。
确认下云服务器的公网端口映射是否配置成功?
4) 安装好了nginx,如果确保服务进程已经正常运行?
使用命令:ps -ef | grep nginx 确认下nginx的进程是否正常运行
5) 配置好了nginx的虚拟主机,如果确保服务已经正常运行?
使用命令:netstat -an | grep 80
端口号默认就是80,确认下80端口是否处于LISTEN状态。
6) 使用我的域名无法解析,提示DNS解析失败。
确认下DNS域名解析配置是否正确,另外,是否有等5分钟以上,以便于域名解析生效。
可以使用ping命令ping一下你的域名,正常是可以ping通的。
7) 域名可以解析,但是无法正常跳转到CSDN主页。
这里需要先确认下nginx的虚拟主机配置的server_name列表里面是否有你要跳转的域名;
其次需要确认下nginx配置中跳转到Apache2的端口是否正确。
以上这些简单的排查方法,基本就可以解决你遇到的问题了。
在我目前的认知里面,应该是可行的,一定程度上,Apache2和nginx的功能有重复的部分。
一开始我也是只配置Apache2,它的配置文件里面也有一个ServerName 字段,理论上可以这里填上你的访问域名,然后虚拟主机的监听端口改为80,应该是可以跑通的。
单配置nginx来实现,也是类似的。
但是可能我操作的过程中哪里搞错了,最终没有配置成功。
后面才想到这个Apache2+nginx的组合来完成我的需求,这么搞是已经达到我的目的了,毕竟我不是专业配置这个的,还需要多学习学习,以后有机会再试试单独使用一个服务来完成。
如果有单用Apache2或nginx就完成了这个需求的朋友,欢迎分享你的配置方法,不甚感激。
本教程中的所有配置文件,我可以毫无保留地分享给大家,包括Apache2的配置文件、csdn跳转的站点配置文件、nginx的配置的文件、Apache2和nginx的启动停止脚本等等。
这些配置文件是我的主机上真实在用的配置文件,理论上拿到之后,修修改改,换成自己的配置就能用的。欢迎添加我的VX,我私发给你。
配置文件压缩包参考图:
全部0条评论
快来发表一下你的评论吧 !