0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【科普教程】手把手教你配置CSDN主頁(yè)的獨(dú)特域名

嵌入式物聯(lián)網(wǎng)開(kāi)發(fā) ? 來(lái)源:嵌入式物聯(lián)網(wǎng)開(kāi)發(fā) ? 作者:嵌入式物聯(lián)網(wǎng)開(kāi)發(fā) ? 2022-07-10 21:28 ? 次閱讀

科普教程】周末爆肝兩天,萬(wàn)字長(zhǎng)文,手把手教你配置CSDN主頁(yè)的獨(dú)特域名(保姆級(jí)教程,建議收藏)


0 感受下效果圖

img

1 寫(xiě)在前面的話

相信經(jīng)常在CSDN上更新博文的博主,一定有這么痛點(diǎn):“CSDN分配的給我的主頁(yè)地址太low了,我的博文這么牛皮,難道就不值得有個(gè)專屬的域名訪問(wèn)嗎?”

比如像,yyds.recan-li.cn (Recan YYDS)就能夠訪問(wèn)到我的CSDN主頁(yè),多么87V5!

你要這么說(shuō),CSDN官方還真提供了類似這樣的服務(wù),不知道你留意過(guò)沒(méi)有?

你試下把鼠標(biāo)移到個(gè)人頭像的圖標(biāo)上,有個(gè)【內(nèi)容管理】,進(jìn)去之后找到有一項(xiàng)【自定義域名】配置。不過(guò)不得不說(shuō),這個(gè)配置真的很雞肋,名字不能太短,而且你還是得和CSDN的名字綁定,最可惡的是,你選好了名字之后,一點(diǎn)【就是它了】,居然自動(dòng)給你跳轉(zhuǎn)到購(gòu)買會(huì)員頁(yè)面,言下之意,沒(méi)錢你玩?zhèn)€jj,所以你懂的!

img

img

OK,扯了這么多,有沒(méi)有什么辦法,繞過(guò)CSDN,搞一個(gè)高大上的域名地址呢?方法當(dāng)然有,且聽(tīng)下文分解,保姆級(jí)教程,手把手教你配置,你也可以擁有獨(dú)一無(wú)二且牛逼哄哄的自定義CSDN域名。

2 先解決有沒(méi)有的問(wèn)題

2.1 前置條件

要達(dá)到類似開(kāi)頭說(shuō)的功能,訪問(wèn) yyds.recan-li.cn 就能訪問(wèn)到自己的CSDN主頁(yè),你得具備以下幾個(gè)條件:

  • 有點(diǎn)Linux服務(wù)器命令行的基礎(chǔ),能夠操作基本的命令行配置(編輯、修改、刪除);
  • 你得擁有一臺(tái)具備公網(wǎng)IP地址的Linux(云)服務(wù)器,推薦使用Ubuntu版本;
  • 你得擁有一個(gè)屬于你自己的DNS域名;
  • 你得懂一些網(wǎng)絡(luò)通訊的基礎(chǔ)知識(shí),至少要知道IP、域名、端口、監(jiān)聽(tīng)、服務(wù)器、客戶端這些基本概念。

2.2 購(gòu)買云服務(wù)器

購(gòu)買云服務(wù)很簡(jiǎn)單,如果你僅僅是為了建站玩一玩自己的博客,配置選最低一點(diǎn)就好了,基本都?jí)蛴谩?guó)內(nèi)網(wǎng)絡(luò)環(huán)境下,首推阿里云、騰訊云、華為云這些大廠的云服務(wù)器。

一般這種配置低的服務(wù)器,價(jià)格都是比較便宜的,碰到打折促銷或者是新用戶的下單,往往更加便宜,大概也就是100塊一年吧。

購(gòu)買這些云服務(wù)器基本都是傻瓜式0配置的,下單購(gòu)買之后,即可在線自動(dòng)配置,隨后在你的購(gòu)買賬號(hào)下(比如我購(gòu)買的是阿里云服務(wù)器,就在我的阿里云賬戶下),有個(gè)控制臺(tái),點(diǎn)進(jìn)去就可以看到你購(gòu)買的云服務(wù)器了,有登錄密碼、公網(wǎng)IP地址之類的重要信息

一般來(lái)說(shuō),選購(gòu)的云服務(wù)器都是沒(méi)有運(yùn)行界面的,只有命令行,可以通過(guò)SSH遠(yuǎn)程登錄。

這里推薦Ubuntu的Linux發(fā)行版本,對(duì)初始用戶還是比較友好的。

具體如何通過(guò)SSH登錄服務(wù)器,這里就不敘述了,很容易就學(xué)會(huì)的。

img

img

再次強(qiáng)調(diào)下,這一步驟,主要為了獲得一個(gè)具備公網(wǎng)IP訪問(wèn)的公有云服務(wù)器。

2.3 購(gòu)買DNS域名

購(gòu)買DNS域名,與購(gòu)買云服務(wù)器類似,也可以選主流的阿里云、騰訊云、華為云等服務(wù)器上,當(dāng)然如果你首次購(gòu)買,建議你同樣選擇云服務(wù)器那個(gè)服務(wù)商,這樣你就只需要登入一個(gè)賬戶就可以看到你的云服務(wù)器和DNS域名。

當(dāng)然你可以單獨(dú)選另一家服務(wù)商,比如我的就選了華為云的DNS域名。

購(gòu)買,配置,登錄都類似,只不過(guò)在勾選域名的時(shí)候,需要你指定你的域名后綴,不同類型的后綴價(jià)格不一樣,而且有可能你想用的域名后綴已經(jīng)被人選了,這也是為何會(huì)有【域名投資】這種玩法的出現(xiàn),就是瘋狂去搶注域名,等別人要用的時(shí)候,只能向你購(gòu)買轉(zhuǎn)讓,畢竟域名是唯一的。

img

我的域名服務(wù)(華為云)控制臺(tái)界面,每個(gè)服務(wù)商提供的界面應(yīng)該都是類似的。

img

再次強(qiáng)調(diào)下,這一步驟,主要為了獲得一個(gè)具備你個(gè)人標(biāo)識(shí)的【獨(dú)一無(wú)二】的域名地址。

推薦個(gè)華為云域名服務(wù),還真的很便宜:

域名建站專場(chǎng)域名購(gòu)買域名優(yōu)惠活動(dòng)域名注冊(cè)域名申請(qǐng)域名特惠網(wǎng)站建設(shè)-華為云

img

2.4 配置Apache2服務(wù)

Apache2服務(wù)是什么,我先不做具體敘述,后面會(huì)詳講,這一步我主要先把Aapche2服務(wù)給搭起來(lái)。

在主流的Linux發(fā)行版里面,使用命令行就可以在線安裝這個(gè)服務(wù)。

比如我使用的是Ubuntu Linux,它的安裝命令就是:

sudo apt-get install apache2

注意如果你是普通用戶的話,一定要使用sudo權(quán)限才能安裝成功。

輸完密碼之后,根據(jù)提示就可以很順利地把Apache2服務(wù)安裝好。

下面開(kāi)始配置Apache2服務(wù),它的配置文件位于/etc/apache2/目錄下:

img

配置過(guò)程中,我們有3個(gè)地方需要配置:ports.conf、sites-enabled、sites-available;

先說(shuō)ports.conf的配置:

用vim打開(kāi)它,默認(rèn)它是監(jiān)聽(tīng)80端口的,我們先把它注釋掉,換成監(jiān)聽(tīng)8101端口,這個(gè)端口就是專門為CSDN主頁(yè)跳轉(zhuǎn)使用的,因?yàn)?0端口后面的nginx服務(wù)需要使用。

修改好的內(nèi)容如下所示:


# 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目錄的配置,先進(jìn)到這個(gè)目錄,里面只有2個(gè)文件:

img

由于我們先不考慮ssl訪問(wèn),所以ssl那個(gè)配置文件先不用動(dòng)。

我們?cè)谶@個(gè)目錄下新建一個(gè)配置文件叫001-csdn.conf,里面的內(nèi)容如下:



        # 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

其中虛擬主機(jī)的端口號(hào)8101一定得是ports.conf里面配置的,要對(duì)得上,然后這個(gè)虛擬主機(jī)的站點(diǎn)文件是位于/var/www/csdn/html目錄下。

下面我們就去這個(gè)站點(diǎn)目錄編寫(xiě)我們的站點(diǎn)文件,也就是我們常說(shuō)的html文件。

首先/var/www/csdn/html目錄開(kāi)始是不存在的,你需要使用以下命令重新建立:

mkdir -p /var/www/csdn/html

然后進(jìn)到這個(gè)目錄,創(chuàng)建一個(gè)叫index.html的文件,里面的內(nèi)容如下:




藍(lán)色部分替換成你的CSDN主頁(yè)即可。

為什么文件名叫index.html,是因?yàn)橐话愕木W(wǎng)絡(luò)站點(diǎn)都會(huì)自動(dòng)找站點(diǎn)目錄下有沒(méi)有index.html。

到這一步,Aapche2服務(wù)基本就配置好,我們需要使用以下命令重啟下服務(wù),使得剛剛的配置生效。

sudo /etc/init.d/apache2 restart (注意使用sudo權(quán)限)

提示成功之后,服務(wù)就跑起來(lái)了。

為了保險(xiǎn)起見(jiàn),我們可以確認(rèn)下我們監(jiān)聽(tīng)的8101端口是否處于監(jiān)聽(tīng)狀態(tài)。

使用如下命令查看:

netstat -an | grep 8101

當(dāng)你看類似如下的LISTEN字樣時(shí),表示它處于正常的監(jiān)聽(tīng)狀態(tài),也就證明我們的Aapche2服務(wù)已經(jīng)跑起來(lái)了。

img

這時(shí),如果你是本地服務(wù)器配置的,比如通過(guò)虛擬機(jī)工具搭建的服務(wù)器,有瀏覽器的話,輸入http://127.0.0.1:8101就可以正常跳轉(zhuǎn)到你的CSDN主頁(yè)了。

但是我們購(gòu)買的是云服務(wù)器,只有命令行,沒(méi)有瀏覽器怎么辦?你可以使用命令訪問(wèn)下,看下Apache2服務(wù)返回是否正常:

curl http://127.0.0.1:8101

如果你能看到這樣的返回,就是把你上面的index.html的內(nèi)容返回給你,證明運(yùn)行是完全OK的。

img

但,我們不是買了具備公網(wǎng)IP的服務(wù)器嗎?我們能不能通過(guò)公網(wǎng)IP訪問(wèn)而不是127.0.0.1這種回環(huán)IP訪問(wèn)呢?我們?cè)囋嚳矗偃缥业墓W(wǎng)IP是8.23.56.89,那么訪問(wèn)地址就是:

curl http://8.23.56.89:8101 (記得更換成你自己的IP)

你會(huì)發(fā)現(xiàn)訪問(wèn)超時(shí),無(wú)法訪問(wèn),類似這樣的錯(cuò)誤。

img

或者使用windows的瀏覽器直接訪問(wèn):http://8.23.56.89:8101 (記得更換成你自己的IP)

同樣也是超時(shí),無(wú)法訪問(wèn)。

為什么???

我的8101端口明明處于監(jiān)聽(tīng)狀態(tài)啊?

原因就是公網(wǎng)IP的端口映射問(wèn)題。

你可以通過(guò)公網(wǎng)IP的22端口SSH登錄你的服務(wù)器,那是因?yàn)樵品?wù)器提供商默認(rèn)幫你把22端口映射好了。至于其他的一些端口,默認(rèn)都是沒(méi)有對(duì)外映射的,也就是說(shuō)如果你想通過(guò)公網(wǎng)IP+端口的形式訪問(wèn)你的服務(wù)器,你必須保證這個(gè)端口有被映射出來(lái)。

如何配置端口映射,請(qǐng)看下一章節(jié)。

2.5 配置云服務(wù)器的端口映射

首先登錄你的云服務(wù)器賬戶,你在哪個(gè)平臺(tái)購(gòu)買的就登錄哪個(gè)。

下面以我的阿里云服務(wù)器為例來(lái)講解,其他云服務(wù)器也類似,可能就是配置的菜單有所變化而已。

找到【云服務(wù)器ECS】,點(diǎn)進(jìn)去:

img

找到【安全組】那一欄,點(diǎn)進(jìn)去:

img

找到【配置規(guī)則】,點(diǎn)進(jìn)去:

img

找到入【方向】-》【手動(dòng)添加】,點(diǎn)進(jìn)去:

img

之后,下面會(huì)多出一行端口配置,參考如下來(lái)填寫(xiě):

img

因?yàn)楹竺嬉残枰玫?0端口,所以干脆在這里一同把80端口也給配置了,如下:

img

如上配置成功之后,我們?cè)僭囅率褂霉W(wǎng)IP加端口的方式訪問(wèn):

curl http://8.23.56.89:8101 (記得更換成你自己的IP)

img

可以訪問(wèn)成功了,證明8101的端口映射已經(jīng)OK了。

或者使用windows的瀏覽器直接訪問(wèn):http://8.23.56.89:8101 (記得更換成你自己的IP)

這時(shí)候應(yīng)該可以正常跳到你的CSDN主頁(yè)了。

OK,離最終的目標(biāo)已經(jīng)很接近了。

2.6 配置nginx服務(wù)

nginx服務(wù)是什么,這里先不做敘述,下文會(huì)詳講。

配置nginx服務(wù),與配置Apache2服務(wù)類似,也需要先安裝nginx服務(wù)。

在ubuntu下使用以下命令安裝,注意使用sudo權(quán)限:

sudo apt-get install nginx

注意如果你是普通用戶的話,一定要使用sudo權(quán)限才能安裝成功。

輸完密碼之后,根據(jù)提示就可以很順利地把nginx服務(wù)安裝好。

下面開(kāi)始配置nginx服務(wù),它的配置文件位于/etc/nginx/目錄下:

在這個(gè)目錄下,有個(gè)nginx.conf配置文件,我們用vim打開(kāi)它,發(fā)現(xiàn)它有一行:

include /etc/nginx/conf.d/*.conf;

所以它的配置文件,主要位于/etc/nginx/conf.d/目錄下。

默認(rèn)情況下,它里面是沒(méi)有配置文件的,我們?cè)谶@個(gè)目錄下建立一個(gè)csdn的配置文件,取名叫001-csdn.conf(主要時(shí)后綴一定得是.conf),里面的配置內(nèi)容如下:

# 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;
   }


}

img

尤其要注意藍(lán)色部分,

server_name那里就是配置你的需要由什么域名訪問(wèn)進(jìn)來(lái),這里可以寫(xiě)多個(gè)域名,每個(gè)域名以空格隔開(kāi);像我這里就寫(xiě)了三個(gè),也就是說(shuō),正常配置好了之后,這三個(gè)域名都可以達(dá)到跳轉(zhuǎn)的目的。這里的域名記得替換成你想使用的跳轉(zhuǎn)域名,也就是你自己域名下的yyds.xxx.com。

下面那個(gè)proxy_pass就是設(shè)置跳轉(zhuǎn)的代理服務(wù),還記得我們上面配置Apache2的CSDN站點(diǎn),使用的是8101端口,而localhost其實(shí)就是127.0.0.1;所以http://localhost:8101就是跳轉(zhuǎn)到訪問(wèn)Apache2配置的CSDN站點(diǎn)去了。

這里還有端口的配置,nginx默認(rèn)就是80端口,而且在上一步中我們已經(jīng)把80端口的映射打開(kāi)了,所以不用管它了。

配置好了之后,重啟下nginx服務(wù),使用以下命令;

sudo /etc/init.d/nginx restart (注意使用sudo權(quán)限)

提示成功表示服務(wù)重啟成功了。

為了保險(xiǎn)起見(jiàn),我們還是查一下80端口是否正常處于監(jiān)聽(tīng)狀態(tài),使用命令查看:

netstat -an | grep 80

當(dāng)你看到圖中類似的字樣,表示監(jiān)聽(tīng)正常。

img

既然nginx已經(jīng)啟動(dòng)成功了,那我們?cè)囈幌聐yds.recan-li.cn跳轉(zhuǎn)是否正常?

嗯哼?怎么回事?無(wú)法訪問(wèn)此界面?

img

仔細(xì)看下,原來(lái)是域名地址的解析還沒(méi)配置,解析失敗了!

不然,我怎么會(huì)說(shuō)一定要有自己的域名呢?

這可是非常關(guān)鍵的一步,且看下文步驟。

2.7 配置DNS域名解析

配置DNS域名,需要登錄你購(gòu)買的域名解析的賬戶,是阿里云賬戶就登錄阿里云。

下面我以華為云的為例,講解下我的域名如何配置,其他云服務(wù)器提供商的配置方法都類似。

首先登錄賬戶,進(jìn)入到控制臺(tái)界面,找到你的【域名注冊(cè)】服務(wù):

img

找到【解析】這一按鈕,點(diǎn)進(jìn)去:

img

找到【管理解析】,點(diǎn)進(jìn)去:

img

找到【添加記錄集】,點(diǎn)進(jìn)去:

img

填寫(xiě)解析記錄,參考如下:

img

這里我們可以取自己想取的名字,比如niupi等等,注意域名的后半部分都是確定的,那是由你購(gòu)買的域名決定的。

選解析類型,選A類解析即可。

值里面填你的公網(wǎng)IP地址,保存就可以了。

配置好了之后,我們可以試下這個(gè)域名是否能正常解析到你配置的IP,使用cmd的ping命令:ping yyds.recan-li.cn

img

當(dāng)你能看到你的公網(wǎng)IP的時(shí)候,證明解析成功了。

這里需要注意的是,配置好域名,它是不會(huì)立即就生效的,需要等點(diǎn)時(shí)間,一般5分鐘之后,解析就可以。

2.8 大功告成,秀一下

把域名解析這最后一步搞定了,基本就已經(jīng)全部配置好了。

我們來(lái)體驗(yàn)下:

img

OK,大家可以看到,成功達(dá)到跳轉(zhuǎn)的目的,一起秀起來(lái)吧!

3 再解決為什么的問(wèn)題

3.1 Apache2服務(wù)是個(gè)啥?

Apache HTTP Server(簡(jiǎn)稱Apache)是Apache軟件基金會(huì)的一個(gè)開(kāi)放源碼的網(wǎng)頁(yè)服務(wù)器,是目前世界上使用最廣泛的一種web server,它以跨平臺(tái),高效和穩(wěn)定而聞名,可以運(yùn)行在幾乎所有廣泛使用的計(jì)算機(jī)平臺(tái)上。Apache的特點(diǎn)是簡(jiǎn)單、速度快、性能穩(wěn)定,并可做代理服務(wù)器來(lái)使用。

Apache2是apache的2.x版本。

Apache是用C語(yǔ)言開(kāi)發(fā)的基于模塊化設(shè)計(jì)的web應(yīng)用,總體上看起來(lái)代碼的可讀性高于php代碼,它的核心代碼并不多,大多數(shù)的功能都被分割到各種模塊中,各個(gè)模塊在系統(tǒng)啟動(dòng)時(shí)按需載入。

支持SSL技術(shù),支持多個(gè)虛擬主機(jī)。Apache是以進(jìn)程的Prefork模式(還有基于線程的Worker模式)為基礎(chǔ)的結(jié)構(gòu),進(jìn)程要比線程消耗更多的系統(tǒng)開(kāi)支,不太適合于多處理器環(huán)境,因此,在一個(gè)Apache Web站點(diǎn)擴(kuò)容時(shí),通常是增加服務(wù)器或擴(kuò)充群集節(jié)點(diǎn)而不是增加處理器。

簡(jiǎn)單一點(diǎn)就是:它是一個(gè)HTTP服務(wù)器**(WEB服務(wù)器)**,客戶端(比如瀏覽器)可以通過(guò)HTTP協(xié)議訪問(wèn)它;并且它還支持虛擬主機(jī)技術(shù),本教程中的配置就是利用這個(gè)虛擬主機(jī)技術(shù)進(jìn)行配置。

3.2 nginx服務(wù)又是個(gè)啥?

nginx是一款自由的、開(kāi)源的、高性能的HTTP服務(wù)器和反向代理服務(wù)器;同時(shí)也是一個(gè)IMAP、POP3、SMTP代理服務(wù)器;Nginx可以作為一個(gè)HTTP服務(wù)器進(jìn)行網(wǎng)站的發(fā)布處理,另外Nginx可以作為反向代理進(jìn)行負(fù)載均衡的實(shí)現(xiàn)。

簡(jiǎn)單來(lái)說(shuō),它就是:一個(gè)輕量級(jí)的HTTP服務(wù)器,但可以支持反向代理功能;本教程的配置就是利用了nginx的反向代理功能??梢詤⒖己竺娴?a href="http://www.ttokpm.com/soft/" target="_blank">參考資料,有細(xì)講nginx的反向代理是怎么回事。

3.3 Apahe2和nginx有啥區(qū)別?

我不是專業(yè)的,找了一篇講得比較清晰的文章,大家可以參考下:

Nginx 和 Apache 區(qū)別最全詳解? - 云+社區(qū) - 騰訊云

img

3.4 什么是域名?跟IP有什么關(guān)系?

域名(英語(yǔ):Domain Name),又稱網(wǎng)域,是由一串用點(diǎn)分隔的名字組成的Internet 上某一臺(tái)計(jì)算機(jī) 或計(jì)算機(jī)組的名稱,用于在數(shù)據(jù)傳輸時(shí)對(duì)計(jì)算機(jī)的定位標(biāo)識(shí)(有時(shí)也指地理位置)。

由于IP地址 具有不方便記憶并且不能顯示地址組織的名稱和性質(zhì)等缺點(diǎn),人們?cè)O(shè)計(jì)出了域名,并通過(guò)網(wǎng)域名稱系統(tǒng)(DNS,Domain Name System)來(lái)將域名和IP地址 相互映射 ,使人更方便地訪問(wèn)互聯(lián)網(wǎng) ,而不用去記住能夠被機(jī)器直接讀取的IP地址 數(shù)串。

盡管IP地址 能夠唯一地標(biāo)記網(wǎng)絡(luò)上的計(jì)算機(jī) ,但I(xiàn)P地址 是一長(zhǎng)串?dāng)?shù)字,不直觀,而且用戶記憶十分不方便,于是人們又發(fā)明了另一套字符型的地址方案,即所謂的域名地址 。IP地址和域名是一一對(duì)應(yīng)的,這份域名地址 的信息存放在一個(gè)叫域名服務(wù)器 (DNS,Domain name server)的主機(jī)內(nèi),使用者只需了解易記的域名地址,其對(duì)應(yīng)轉(zhuǎn)換工作就留給了域名服務(wù)器 。域名服務(wù)器就是提供IP地址和域名之間的轉(zhuǎn)換服務(wù)的服務(wù)器。

本教程就是通過(guò)購(gòu)買一個(gè)域名服務(wù),然后自定義一個(gè)子域名來(lái)達(dá)到訪問(wèn)跳轉(zhuǎn)主頁(yè)的需求。

3.5 域名跳轉(zhuǎn)的實(shí)現(xiàn)原理

有了上面的預(yù)備知識(shí),到這我來(lái)講下實(shí)現(xiàn)自定義域名來(lái)跳轉(zhuǎn)到CSDN主頁(yè)的原理就比較容易了。

注意,等你真正理解并學(xué)會(huì)了這里的配置方法,你可以實(shí)現(xiàn)任意域名(當(dāng)然域名后綴得是你的)跳轉(zhuǎn)到你的任意社交主頁(yè),比如我的知乎主頁(yè) (zhihu.recan-li.cn ),我的github主頁(yè)(github.recan-li.cn ),我的gitee主頁(yè)(gitee.recan-li.cn )。

整一個(gè)跳轉(zhuǎn)的原理如下圖所示:

img

實(shí)現(xiàn)跳轉(zhuǎn)主要有以下幾步:

  1. 瀏覽器輸入自定義的域名:yyds.xxx.com
  2. 經(jīng)過(guò)域名服務(wù)器,解析成公網(wǎng)IP,這個(gè)IP就是云服務(wù)器的公網(wǎng)IP;
  3. 取得IP后,加上默認(rèn)的HTTP端口80,再在HTTP報(bào)文頭添加hostname字段,字段填寫(xiě)自定義的域名,對(duì)nginx服務(wù)發(fā)起HTTP連接;
  4. nginx收到請(qǐng)求后,識(shí)別HTTP報(bào)文頭的Host字段,然后于nginx的虛擬主機(jī)配置文件中的server_name一個(gè)個(gè)比對(duì),當(dāng)識(shí)別到對(duì)應(yīng)的server之后,執(zhí)行代理服務(wù)訪問(wèn),訪問(wèn)的地址由proxy_pass指定;這一步驟就是nginx的反向代理的關(guān)鍵步驟;
  5. 接著nginx的代理就訪問(wèn)到Apache2架起的HTTP服務(wù),把其對(duì)應(yīng)的index.html通過(guò)代理的形式返回,一直返回到瀏覽器中;
  6. 瀏覽器收到index.html的內(nèi)容后,開(kāi)始解析;其中有一個(gè)html的腳本:

window.location.href="https://blog.csdn.net/szullc";

瀏覽器就會(huì)執(zhí)行“地址重定向”,相當(dāng)于重新把這個(gè)href的url放到瀏覽器的地址欄進(jìn)行 跳轉(zhuǎn),這一步是html語(yǔ)法定義的,瀏覽器會(huì)自動(dòng)執(zhí)行的,無(wú)需人工干預(yù);

  1. 瀏覽器取得需要跳轉(zhuǎn)的url后,也同樣需要發(fā)起域名解析,經(jīng)過(guò)域名服務(wù)器取得對(duì)應(yīng)服務(wù)器的IP地址,然后根據(jù)是HTTP還是HTTPS,分別添加80或443端口,訪問(wèn)真實(shí)的服務(wù)器,也就是對(duì)應(yīng)我們要跳轉(zhuǎn)到的主頁(yè);
  2. 待瀏覽器重新跳轉(zhuǎn)完成之后,就會(huì)看到對(duì)應(yīng)的主頁(yè)就顯示出來(lái)了,也就是上面展示的那種效果。

3.6 抓包分析

為了進(jìn)一步驗(yàn)證上面的原理,我們來(lái)嘗試抓一下網(wǎng)絡(luò)通訊報(bào)文,通過(guò)報(bào)文一看,便一目了然,任何跳轉(zhuǎn)都逃不過(guò)網(wǎng)絡(luò)報(bào)文的法眼。

這里需要用到的工具是wireshark抓包工具,關(guān)于wireshark工具,我這里可以簡(jiǎn)單介紹一下:

Wireshark(前稱Ethereal)是一個(gè)網(wǎng)絡(luò)封包 分析軟件。網(wǎng)絡(luò)封包分析軟件的功能是截取網(wǎng)絡(luò)封包,并盡可能顯示出最為詳細(xì)的網(wǎng)絡(luò)封包資料。Wireshark使用WinPCAP作為接口,直接與網(wǎng)卡進(jìn)行數(shù)據(jù)報(bào)文交換。

網(wǎng)絡(luò)管理員 使用Wireshark來(lái)檢測(cè)網(wǎng)絡(luò)問(wèn)題,網(wǎng)絡(luò)安全工程師 使用Wireshark來(lái)檢查資訊安全相關(guān)問(wèn)題,開(kāi)發(fā)者使用Wireshark來(lái)為新的通訊協(xié)定除錯(cuò),普通使用者使用Wireshark來(lái)學(xué)習(xí)網(wǎng)絡(luò)協(xié)定的相關(guān)知識(shí)。當(dāng)然,有的人也會(huì)“居心叵測(cè) ”的用它來(lái)尋找一些敏感信息……

Wireshark不是入侵偵測(cè)系統(tǒng)(Intrusion Detection System,IDS )。對(duì)于網(wǎng)絡(luò)上的異常流量行為,Wireshark不會(huì)產(chǎn)生警示或是任何提示。然而,仔細(xì)分析Wireshark擷取的封包 能夠幫助使用者對(duì)于網(wǎng)絡(luò)行為有更清楚的了解。Wireshark不會(huì)對(duì)網(wǎng)絡(luò)封包 產(chǎn)生內(nèi)容的修改,它只會(huì)反映出流通的封包資訊。 Wireshark本身也不會(huì)送出封包至網(wǎng)絡(luò)上。

具體如何操作wireshak來(lái)抓取網(wǎng)絡(luò),大家可以參考這里的教程:

https://jingyan.baidu.com/article/8cdccae9385fe9315413cda6.html

這里我直接把我這邊抓到的通訊報(bào)文放這里,

訪問(wèn)CSDN主頁(yè)網(wǎng)絡(luò)抓包-網(wǎng)絡(luò)安全文檔類資源-CSDN下載

感興趣的可以拿來(lái)分析分析。

通過(guò)分析報(bào)文,發(fā)現(xiàn)真正的訪問(wèn)過(guò)程比我描述的步驟還要多一些,但大體還是按照我說(shuō)的這個(gè)流程來(lái)的。

以下做一下簡(jiǎn)要的步驟分析:

  1. 解析yyds.xxx.com域名,獲取IP;
img

  1. 發(fā)起HTTP請(qǐng)求,注意HTTP頭部填充了Host字段,往對(duì)應(yīng)IP的80端口(HTTP默認(rèn)端口)發(fā)起GET請(qǐng)求;
img

img

  1. nginx識(shí)別到請(qǐng)求,根據(jù)Host的值進(jìn)行反向代理,返回對(duì)應(yīng)的index.html;由于這一步是在服務(wù)器完成的,所以抓包里面無(wú)法體現(xiàn);
  2. 瀏覽器取得index.html,進(jìn)行二次訪問(wèn);首先也得解析域名,拿到服務(wù)器的IP;
img

  1. 取得IP后,根據(jù)是訪問(wèn)的URL是HTTP還是HTTPS,加上80或443端口,發(fā)起連接訪問(wèn),最后成功返回主頁(yè)的內(nèi)容。
img

4 你一定還有很多疑問(wèn)

4.1 如果我沒(méi)有云服務(wù)器怎么辦?

如果你只有自己的域名,但沒(méi)有自己的公網(wǎng)IP云服務(wù)器,那么你需要找一個(gè)別人有云服務(wù)器的朋友(比如我),幫你配置一個(gè)端口,然后把端口對(duì)應(yīng)的Apache2服務(wù)站點(diǎn)的index.html跳轉(zhuǎn)到你的CSDN主頁(yè),同時(shí)在nginx中將server_name配置成你的域名地址,這樣就可以了。

說(shuō)白了,就是重新走了一遍配置過(guò)程,這些配置對(duì)于云服務(wù)器是沒(méi)有增加多大壓力的,只不過(guò)增加了幾個(gè)端口的跳轉(zhuǎn)而已。

如果有此需求的朋友,可以關(guān)注我的主頁(yè),然后私信我,我?guī)湍愀愣ā?/p>

4.2 如果我沒(méi)有自己的域名怎么辦?

對(duì)不起,如果沒(méi)有域名的話,就只有通過(guò)IP加端口的方式來(lái)訪問(wèn)了;雖然通過(guò)域名最終也都是IP和端口進(jìn)行通訊,但是使用IP和端口的方式,有個(gè)致命的弱點(diǎn)就是需要記住IP和端口,而這些東西都是一串?dāng)?shù)字,不具備很好的記憶條件。

所以,為了方便,還是建議你買一個(gè)域名,域名不貴但是很值。

4.3 如果我不想映射公網(wǎng)端口,會(huì)影響域名跳轉(zhuǎn)嗎?

如果不希望別人通過(guò)公網(wǎng)IP加端口就訪問(wèn)到我的服務(wù),那是不是可以把配置的映射端口給刪除了?這樣會(huì)不會(huì)影響域名跳轉(zhuǎn)呢?

這種情況下,你可以刪掉這個(gè)端口的映射的。因?yàn)樵谖覀兊姆桨咐锩?,是先通過(guò)80端口訪問(wèn)nginx服務(wù),然后nginx根據(jù)傳入的Host字段,再由代理轉(zhuǎn)發(fā)到指定的端口(端口是由Apache2服務(wù)在監(jiān)聽(tīng)的),由于nginx和Apache2是在同一臺(tái)機(jī)器上,所以可以通過(guò)127.0.0.1:xxx的訪問(wèn)方式,也就是內(nèi)網(wǎng)訪問(wèn)的方式來(lái)訪問(wèn),這樣這個(gè)xxx端口就不需要映射到公網(wǎng),跳轉(zhuǎn)也是沒(méi)有問(wèn)題的。

4.4 如果某些步驟執(zhí)行完了,達(dá)不到教程的效果怎么辦?

這里給大家提供幾個(gè)排查的方法,也就是幾個(gè)問(wèn)題需要重點(diǎn)關(guān)注:

1) 安裝好了Apache2,如果確保這個(gè)服務(wù)進(jìn)程已經(jīng)正常運(yùn)行?

使用命令:ps -ef | grep apache2 確認(rèn)下apache2的進(jìn)程是否正常運(yùn)行

2) 配置好了Apache2的CSDN站點(diǎn),如果確保服務(wù)已經(jīng)正常運(yùn)行?

使用命令:netstat -an | grep 8101

端口號(hào)就使用你自己配置的那個(gè),確認(rèn)下端口是否處于LISTEN狀態(tài)。

還可以使用curl http://127.0.0.1:8101

確認(rèn)下index.html能否正常取到。

3) 配置好了Apache2的CSDN站點(diǎn),通過(guò)公網(wǎng)加端口的方式無(wú)法訪問(wèn)。

確認(rèn)下云服務(wù)器的公網(wǎng)端口映射是否配置成功?

4) 安裝好了nginx,如果確保服務(wù)進(jìn)程已經(jīng)正常運(yùn)行?

使用命令:ps -ef | grep nginx 確認(rèn)下nginx的進(jìn)程是否正常運(yùn)行

5) 配置好了nginx的虛擬主機(jī),如果確保服務(wù)已經(jīng)正常運(yùn)行?

使用命令:netstat -an | grep 80

端口號(hào)默認(rèn)就是80,確認(rèn)下80端口是否處于LISTEN狀態(tài)。

6) 使用我的域名無(wú)法解析,提示DNS解析失敗。

確認(rèn)下DNS域名解析配置是否正確,另外,是否有等5分鐘以上,以便于域名解析生效。

可以使用ping命令ping一下你的域名,正常是可以ping通的。

7) 域名可以解析,但是無(wú)法正常跳轉(zhuǎn)到CSDN主頁(yè)。

這里需要先確認(rèn)下nginx的虛擬主機(jī)配置的server_name列表里面是否有你要跳轉(zhuǎn)的域名;

其次需要確認(rèn)下nginx配置中跳轉(zhuǎn)到Apache2的端口是否正確。

以上這些簡(jiǎn)單的排查方法,基本就可以解決你遇到的問(wèn)題了。

4.5 能不能只配置Apache2或者nginx就完成相應(yīng)的功能?

在我目前的認(rèn)知里面,應(yīng)該是可行的,一定程度上,Apache2和nginx的功能有重復(fù)的部分。

一開(kāi)始我也是只配置Apache2,它的配置文件里面也有一個(gè)ServerName 字段,理論上可以這里填上你的訪問(wèn)域名,然后虛擬主機(jī)的監(jiān)聽(tīng)端口改為80,應(yīng)該是可以跑通的。

單配置nginx來(lái)實(shí)現(xiàn),也是類似的。

但是可能我操作的過(guò)程中哪里搞錯(cuò)了,最終沒(méi)有配置成功。

后面才想到這個(gè)Apache2+nginx的組合來(lái)完成我的需求,這么搞是已經(jīng)達(dá)到我的目的了,畢竟我不是專業(yè)配置這個(gè)的,還需要多學(xué)習(xí)學(xué)習(xí),以后有機(jī)會(huì)再試試單獨(dú)使用一個(gè)服務(wù)來(lái)完成。

如果有單用Apache2或nginx就完成了這個(gè)需求的朋友,歡迎分享你的配置方法,不甚感激。

5 更多技術(shù)、更多分享

5.1 教程的配置文件下載

本教程中的所有配置文件,我可以毫無(wú)保留地分享給大家,包括Apache2的配置文件、csdn跳轉(zhuǎn)的站點(diǎn)配置文件、nginx的配置的文件、Apache2和nginx的啟動(dòng)停止腳本等等。

這些配置文件是我的主機(jī)上真實(shí)在用的配置文件,理論上拿到之后,修修改改,換成自己的配置就能用的。歡迎添加我的VX,我私發(fā)給你。

配置文件壓縮包參考圖:

img

6 參考資料

  • Apache官網(wǎng)
  • Apache的介紹:Apache服務(wù)一簡(jiǎn)介與安裝南風(fēng)喃的博客-CSDN博客apache服務(wù)
  • nginx官網(wǎng)
  • nginx是什么?Nginx是什么?能干嘛?_代理
  • 使用nginx實(shí)現(xiàn)反向代理:使用Nginx實(shí)現(xiàn)反向代理飯桶一生奮斗-CSDN博客nginx反向代理
  • Apache和nginx的區(qū)別詳解:Nginx 和 Apache 區(qū)別最全詳解? - 云+社區(qū) - 騰訊云
  • wireshark官網(wǎng)
  • wireshark百度百科:Wireshark_百度百科
  • wireshark抓包教程

審核編輯 黃昊宇
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 域名
    +關(guān)注

    關(guān)注

    0

    文章

    68

    瀏覽量

    11261
  • DNS
    DNS
    +關(guān)注

    關(guān)注

    0

    文章

    211

    瀏覽量

    19700
  • 云服務(wù)器
    +關(guān)注

    關(guān)注

    0

    文章

    475

    瀏覽量

    13280
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    圖文教程:手把手教你焊接貼片元件

    圖文教程:手把手教你焊接貼片元件,首先來(lái)張全部焊接一個(gè)點(diǎn)的PCB圖
    發(fā)表于 04-01 11:03 ?3.6w次閱讀
    圖文教程:<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>焊接貼片元件

    手把手教你使用QUARTUS

    手把手教你使用QUARTUS
    發(fā)表于 12-29 20:35

    手把手教你構(gòu)建一個(gè)完整的工程

    手把手教你構(gòu)建一個(gè)完整的工程
    發(fā)表于 08-03 09:54 ?33次下載
    <b class='flag-5'>手把手</b><b class='flag-5'>教你</b>構(gòu)建一個(gè)完整的工程

    手把手教你寫(xiě)批處理-批處理的介紹

    手把手教你寫(xiě)批處理-批處理的介紹
    發(fā)表于 10-25 15:02 ?69次下載

    美女手把手教你如何裝機(jī)(中)

    美女手把手教你如何裝機(jī)(中) 再來(lái)是硬碟的部份,這款機(jī)殼還不錯(cuò),可以旋轉(zhuǎn)支架~
    發(fā)表于 01-27 11:14 ?1420次閱讀

    美女手把手教你如何裝機(jī)(下)

    美女手把手教你如何裝機(jī)(下) 接著下來(lái)就是今天的重頭戲,開(kāi)核蘿!~
    發(fā)表于 01-27 11:16 ?2905次閱讀

    手把手教你學(xué)習(xí)FPGA—LED篇

    電子專業(yè)單片機(jī)相關(guān)知識(shí)學(xué)習(xí)教材資料——手把手教你學(xué)習(xí)FPGA—LED篇
    發(fā)表于 08-08 17:19 ?0次下載

    手把手教你學(xué)電子書(shū)制作

    手把手教你學(xué)電子書(shū)制作,可以自己DIY電子書(shū)
    發(fā)表于 09-13 11:26 ?0次下載

    手把手教你安裝Quartus II

    本章手把手把教你如何安裝 Quartus II 軟件 ,并將它激活 。此外 還有USB -Blaster下載器的驅(qū)動(dòng)安裝步驟 。
    發(fā)表于 09-18 14:55 ?9次下載

    手把手教你在家搭建監(jiān)控系統(tǒng)

    手把手教你在家搭建監(jiān)控系統(tǒng)
    發(fā)表于 01-17 19:47 ?25次下載

    手把手教你做電子時(shí)鐘---前言

    手把手教你做彩鈴電子時(shí)鐘
    發(fā)表于 11-14 16:53 ?11次下載

    手把手教你如何開(kāi)始DSP編程

    手把手教你如何開(kāi)始DSP編程。
    發(fā)表于 04-09 11:54 ?12次下載
    <b class='flag-5'>手把手</b><b class='flag-5'>教你</b>如何開(kāi)始DSP編程

    手把手教你學(xué)LabVIEW視覺(jué)設(shè)計(jì)

    手把手教你學(xué)LabVIEW視覺(jué)設(shè)計(jì)手把手教你學(xué)LabVIEW視覺(jué)設(shè)計(jì)手把手教你學(xué)LabVIEW視
    發(fā)表于 03-06 01:41 ?3000次閱讀

    手把手教你開(kāi)關(guān)電源PCB排板

    手把手教你開(kāi)關(guān)電源PCB排板(新型電源技術(shù))-分享一下開(kāi)關(guān)電源PCB排板的基本要點(diǎn)及分析,以及例子講解。絕對(duì)的手把手
    發(fā)表于 09-18 12:27 ?57次下載
    <b class='flag-5'>手把手</b><b class='flag-5'>教你</b>開(kāi)關(guān)電源PCB排板

    手把手教你學(xué)FPGA仿真

    電子發(fā)燒友網(wǎng)站提供《手把手教你學(xué)FPGA仿真.pdf》資料免費(fèi)下載
    發(fā)表于 10-19 09:17 ?2次下載
    <b class='flag-5'>手把手</b><b class='flag-5'>教你</b>學(xué)FPGA仿真