【科普教程】周末爆肝兩天,萬字長文,手把手教你配置CSDN主頁的獨特域名(保姆級教程,建議收藏)
0 感受下效果圖

1 寫在前面的話
相信經(jīng)常在CSDN上更新博文的博主,一定有這么痛點:“CSDN分配的給我的主頁地址太low了,我的博文這么牛皮,難道就不值得有個專屬的域名訪問嗎?”
比如像,yyds.recan-li.cn (Recan YYDS)就能夠訪問到我的CSDN主頁,多么87V5!
你要這么說,CSDN官方還真提供了類似這樣的服務(wù),不知道你留意過沒有?
你試下把鼠標(biāo)移到個人頭像的圖標(biāo)上,有個【內(nèi)容管理】,進(jìn)去之后找到有一項【自定義域名】配置。不過不得不說,這個配置真的很雞肋,名字不能太短,而且你還是得和CSDN的名字綁定,最可惡的是,你選好了名字之后,一點【就是它了】,居然自動給你跳轉(zhuǎn)到購買會員頁面,言下之意,沒錢你玩?zhèn)€jj,所以你懂的!


OK,扯了這么多,有沒有什么辦法,繞過CSDN,搞一個高大上的域名地址呢?方法當(dāng)然有,且聽下文分解,保姆級教程,手把手教你配置,你也可以擁有獨一無二且牛逼哄哄的自定義CSDN域名。
2 先解決有沒有的問題
2.1 前置條件
要達(dá)到類似開頭說的功能,訪問 yyds.recan-li.cn 就能訪問到自己的CSDN主頁,你得具備以下幾個條件:
- 有點Linux服務(wù)器命令行的基礎(chǔ),能夠操作基本的命令行配置(編輯、修改、刪除);
- 你得擁有一臺具備公網(wǎng)IP地址的Linux(云)服務(wù)器,推薦使用Ubuntu版本;
- 你得擁有一個屬于你自己的DNS域名;
- 你得懂一些網(wǎng)絡(luò)通訊的基礎(chǔ)知識,至少要知道IP、域名、端口、監(jiān)聽、服務(wù)器、客戶端這些基本概念。
2.2 購買云服務(wù)器
購買云服務(wù)很簡單,如果你僅僅是為了建站玩一玩自己的博客,配置選最低一點就好了,基本都夠用。國內(nèi)網(wǎng)絡(luò)環(huán)境下,首推阿里云、騰訊云、華為云這些大廠的云服務(wù)器。
一般這種配置低的服務(wù)器,價格都是比較便宜的,碰到打折促銷或者是新用戶的下單,往往更加便宜,大概也就是100塊一年吧。
購買這些云服務(wù)器基本都是傻瓜式0配置的,下單購買之后,即可在線自動配置,隨后在你的購買賬號下(比如我購買的是阿里云服務(wù)器,就在我的阿里云賬戶下),有個控制臺,點進(jìn)去就可以看到你購買的云服務(wù)器了,有登錄密碼、公網(wǎng)IP地址之類的重要信息。
一般來說,選購的云服務(wù)器都是沒有運(yùn)行界面的,只有命令行,可以通過SSH遠(yuǎn)程登錄。
這里推薦Ubuntu的Linux發(fā)行版本,對初始用戶還是比較友好的。
具體如何通過SSH登錄服務(wù)器,這里就不敘述了,很容易就學(xué)會的。


再次強(qiáng)調(diào)下,這一步驟,主要為了獲得一個具備公網(wǎng)IP訪問的公有云服務(wù)器。
2.3 購買DNS域名
購買DNS域名,與購買云服務(wù)器類似,也可以選主流的阿里云、騰訊云、華為云等服務(wù)器上,當(dāng)然如果你首次購買,建議你同樣選擇云服務(wù)器那個服務(wù)商,這樣你就只需要登入一個賬戶就可以看到你的云服務(wù)器和DNS域名。
當(dāng)然你可以單獨選另一家服務(wù)商,比如我的就選了華為云的DNS域名。
購買,配置,登錄都類似,只不過在勾選域名的時候,需要你指定你的域名后綴,不同類型的后綴價格不一樣,而且有可能你想用的域名后綴已經(jīng)被人選了,這也是為何會有【域名投資】這種玩法的出現(xiàn),就是瘋狂去搶注域名,等別人要用的時候,只能向你購買轉(zhuǎn)讓,畢竟域名是唯一的。

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

再次強(qiáng)調(diào)下,這一步驟,主要為了獲得一個具備你個人標(biāo)識的【獨一無二】的域名地址。
推薦個華為云域名服務(wù),還真的很便宜:
域名建站專場域名購買域名優(yōu)惠活動域名注冊域名申請域名特惠網(wǎng)站建設(shè)-華為云

2.4 配置Apache2服務(wù)
Apache2服務(wù)是什么,我先不做具體敘述,后面會詳講,這一步我主要先把Aapche2服務(wù)給搭起來。
在主流的Linux發(fā)行版里面,使用命令行就可以在線安裝這個服務(wù)。
比如我使用的是Ubuntu Linux,它的安裝命令就是:
sudo apt-get install apache2
注意如果你是普通用戶的話,一定要使用sudo權(quán)限才能安裝成功。
輸完密碼之后,根據(jù)提示就可以很順利地把Apache2服務(wù)安裝好。
下面開始配置Apache2服務(wù),它的配置文件位于/etc/apache2/目錄下:

配置過程中,我們有3個地方需要配置:ports.conf、sites-enabled、sites-available;
先說ports.conf的配置:
用vim打開它,默認(rèn)它是監(jiān)聽80端口的,我們先把它注釋掉,換成監(jiān)聽8101端口,這個端口就是專門為CSDN主頁跳轉(zhuǎn)使用的,因為80端口后面的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)到這個目錄,里面只有2個文件:

由于我們先不考慮ssl訪問,所以ssl那個配置文件先不用動。
我們在這個目錄下新建一個配置文件叫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ī)的端口號8101一定得是ports.conf里面配置的,要對得上,然后這個虛擬主機(jī)的站點文件是位于/var/www/csdn/html目錄下。
下面我們就去這個站點目錄編寫我們的站點文件,也就是我們常說的html文件。
首先/var/www/csdn/html目錄開始是不存在的,你需要使用以下命令重新建立:
mkdir -p /var/www/csdn/html
然后進(jìn)到這個目錄,創(chuàng)建一個叫index.html的文件,里面的內(nèi)容如下:
藍(lán)色部分替換成你的CSDN主頁即可。
為什么文件名叫index.html,是因為一般的網(wǎng)絡(luò)站點都會自動找站點目錄下有沒有index.html。
到這一步,Aapche2服務(wù)基本就配置好,我們需要使用以下命令重啟下服務(wù),使得剛剛的配置生效。
sudo /etc/init.d/apache2 restart (注意使用sudo權(quán)限)
提示成功之后,服務(wù)就跑起來了。
為了保險起見,我們可以確認(rèn)下我們監(jiān)聽的8101端口是否處于監(jiān)聽狀態(tài)。
使用如下命令查看:
netstat -an | grep 8101
當(dāng)你看類似如下的LISTEN字樣時,表示它處于正常的監(jiān)聽狀態(tài),也就證明我們的Aapche2服務(wù)已經(jīng)跑起來了。

這時,如果你是本地服務(wù)器配置的,比如通過虛擬機(jī)工具搭建的服務(wù)器,有瀏覽器的話,輸入http://127.0.0.1:8101就可以正常跳轉(zhuǎn)到你的CSDN主頁了。
但是我們購買的是云服務(wù)器,只有命令行,沒有瀏覽器怎么辦?你可以使用命令訪問下,看下Apache2服務(wù)返回是否正常:
curl http://127.0.0.1:8101
如果你能看到這樣的返回,就是把你上面的index.html的內(nèi)容返回給你,證明運(yùn)行是完全OK的。

但,我們不是買了具備公網(wǎng)IP的服務(wù)器嗎?我們能不能通過公網(wǎng)IP訪問而不是127.0.0.1這種回環(huán)IP訪問呢?我們試試看,假如我的公網(wǎng)IP是8.23.56.89,那么訪問地址就是:
curl http://8.23.56.89:8101 (記得更換成你自己的IP)
你會發(fā)現(xiàn)訪問超時,無法訪問,類似這樣的錯誤。

或者使用windows的瀏覽器直接訪問:http://8.23.56.89:8101 (記得更換成你自己的IP)
同樣也是超時,無法訪問。
為什么???
我的8101端口明明處于監(jiān)聽狀態(tài)啊?
原因就是公網(wǎng)IP的端口映射問題。
你可以通過公網(wǎng)IP的22端口SSH登錄你的服務(wù)器,那是因為云服務(wù)器提供商默認(rèn)幫你把22端口映射好了。至于其他的一些端口,默認(rèn)都是沒有對外映射的,也就是說如果你想通過公網(wǎng)IP+端口的形式訪問你的服務(wù)器,你必須保證這個端口有被映射出來。
如何配置端口映射,請看下一章節(jié)。
2.5 配置云服務(wù)器的端口映射
首先登錄你的云服務(wù)器賬戶,你在哪個平臺購買的就登錄哪個。
下面以我的阿里云服務(wù)器為例來講解,其他云服務(wù)器也類似,可能就是配置的菜單有所變化而已。
找到【云服務(wù)器ECS】,點進(jìn)去:

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

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

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

之后,下面會多出一行端口配置,參考如下來填寫:

因為后面也需要用到80端口,所以干脆在這里一同把80端口也給配置了,如下:

如上配置成功之后,我們再試下使用公網(wǎng)IP加端口的方式訪問:
curl http://8.23.56.89:8101 (記得更換成你自己的IP)

可以訪問成功了,證明8101的端口映射已經(jīng)OK了。
或者使用windows的瀏覽器直接訪問:http://8.23.56.89:8101 (記得更換成你自己的IP)
這時候應(yīng)該可以正常跳到你的CSDN主頁了。
OK,離最終的目標(biāo)已經(jīng)很接近了。
2.6 配置nginx服務(wù)
nginx服務(wù)是什么,這里先不做敘述,下文會詳講。
配置nginx服務(wù),與配置Apache2服務(wù)類似,也需要先安裝nginx服務(wù)。
在ubuntu下使用以下命令安裝,注意使用sudo權(quán)限:
sudo apt-get install nginx
注意如果你是普通用戶的話,一定要使用sudo權(quán)限才能安裝成功。
輸完密碼之后,根據(jù)提示就可以很順利地把nginx服務(wù)安裝好。
下面開始配置nginx服務(wù),它的配置文件位于/etc/nginx/目錄下:
在這個目錄下,有個nginx.conf配置文件,我們用vim打開它,發(fā)現(xiàn)它有一行:
include /etc/nginx/conf.d/*.conf;
所以它的配置文件,主要位于/etc/nginx/conf.d/目錄下。
默認(rèn)情況下,它里面是沒有配置文件的,我們在這個目錄下建立一個csdn的配置文件,取名叫001-csdn.conf(主要時后綴一定得是.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;
}
}

尤其要注意藍(lán)色部分,
server_name那里就是配置你的需要由什么域名訪問進(jìn)來,這里可以寫多個域名,每個域名以空格隔開;像我這里就寫了三個,也就是說,正常配置好了之后,這三個域名都可以達(dá)到跳轉(zhuǎn)的目的。這里的域名記得替換成你想使用的跳轉(zhuǎn)域名,也就是你自己域名下的yyds.xxx.com。
下面那個proxy_pass就是設(shè)置跳轉(zhuǎn)的代理服務(wù),還記得我們上面配置Apache2的CSDN站點,使用的是8101端口,而localhost其實就是127.0.0.1;所以http://localhost:8101就是跳轉(zhuǎn)到訪問Apache2配置的CSDN站點去了。
這里還有端口的配置,nginx默認(rèn)就是80端口,而且在上一步中我們已經(jīng)把80端口的映射打開了,所以不用管它了。
配置好了之后,重啟下nginx服務(wù),使用以下命令;
sudo /etc/init.d/nginx restart (注意使用sudo權(quán)限)
提示成功表示服務(wù)重啟成功了。
為了保險起見,我們還是查一下80端口是否正常處于監(jiān)聽狀態(tài),使用命令查看:
netstat -an | grep 80
當(dāng)你看到圖中類似的字樣,表示監(jiān)聽正常。

既然nginx已經(jīng)啟動成功了,那我們試一下yyds.recan-li.cn跳轉(zhuǎn)是否正常?
嗯哼?怎么回事?無法訪問此界面?

仔細(xì)看下,原來是域名地址的解析還沒配置,解析失敗了!
不然,我怎么會說一定要有自己的域名呢?
這可是非常關(guān)鍵的一步,且看下文步驟。
2.7 配置DNS域名解析
配置DNS域名,需要登錄你購買的域名解析的賬戶,是阿里云賬戶就登錄阿里云。
下面我以華為云的為例,講解下我的域名如何配置,其他云服務(wù)器提供商的配置方法都類似。
首先登錄賬戶,進(jìn)入到控制臺界面,找到你的【域名注冊】服務(wù):

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

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

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

填寫解析記錄,參考如下:

這里我們可以取自己想取的名字,比如niupi等等,注意域名的后半部分都是確定的,那是由你購買的域名決定的。
選解析類型,選A類解析即可。
值里面填你的公網(wǎng)IP地址,保存就可以了。
配置好了之后,我們可以試下這個域名是否能正常解析到你配置的IP,使用cmd的ping命令:ping yyds.recan-li.cn

當(dāng)你能看到你的公網(wǎng)IP的時候,證明解析成功了。
這里需要注意的是,配置好域名,它是不會立即就生效的,需要等點時間,一般5分鐘之后,解析就可以。
2.8 大功告成,秀一下
把域名解析這最后一步搞定了,基本就已經(jīng)全部配置好了。
我們來體驗下:

OK,大家可以看到,成功達(dá)到跳轉(zhuǎn)的目的,一起秀起來吧!
3 再解決為什么的問題
3.1 Apache2服務(wù)是個啥?
Apache HTTP Server(簡稱Apache)是Apache軟件基金會的一個開放源碼的網(wǎng)頁服務(wù)器,是目前世界上使用最廣泛的一種web server,它以跨平臺,高效和穩(wěn)定而聞名,可以運(yùn)行在幾乎所有廣泛使用的計算機(jī)平臺上。Apache的特點是簡單、速度快、性能穩(wěn)定,并可做代理服務(wù)器來使用。
Apache2是apache的2.x版本。
Apache是用C語言開發(fā)的基于模塊化設(shè)計的web應(yīng)用,總體上看起來代碼的可讀性高于php代碼,它的核心代碼并不多,大多數(shù)的功能都被分割到各種模塊中,各個模塊在系統(tǒng)啟動時按需載入。
支持SSL技術(shù),支持多個虛擬主機(jī)。Apache是以進(jìn)程的Prefork模式(還有基于線程的Worker模式)為基礎(chǔ)的結(jié)構(gòu),進(jìn)程要比線程消耗更多的系統(tǒng)開支,不太適合于多處理器環(huán)境,因此,在一個Apache Web站點擴(kuò)容時,通常是增加服務(wù)器或擴(kuò)充群集節(jié)點而不是增加處理器。
簡單一點就是:它是一個HTTP服務(wù)器**(WEB服務(wù)器)**,客戶端(比如瀏覽器)可以通過HTTP協(xié)議訪問它;并且它還支持虛擬主機(jī)技術(shù),本教程中的配置就是利用這個虛擬主機(jī)技術(shù)進(jìn)行配置。
3.2 nginx服務(wù)又是個啥?
nginx是一款自由的、開源的、高性能的HTTP服務(wù)器和反向代理服務(wù)器;同時也是一個IMAP、POP3、SMTP代理服務(wù)器;Nginx可以作為一個HTTP服務(wù)器進(jìn)行網(wǎng)站的發(fā)布處理,另外Nginx可以作為反向代理進(jìn)行負(fù)載均衡的實現(xiàn)。
簡單來說,它就是:一個輕量級的HTTP服務(wù)器,但可以支持反向代理功能;本教程的配置就是利用了nginx的反向代理功能??梢詤⒖己竺娴膮⒖假Y料,有細(xì)講nginx的反向代理是怎么回事。
3.3 Apahe2和nginx有啥區(qū)別?
我不是專業(yè)的,找了一篇講得比較清晰的文章,大家可以參考下:
Nginx 和 Apache 區(qū)別最全詳解? - 云+社區(qū) - 騰訊云

3.4 什么是域名?跟IP有什么關(guān)系?
域名(英語:Domain Name),又稱網(wǎng)域,是由一串用點分隔的名字組成的Internet 上某一臺計算機(jī) 或計算機(jī)組的名稱,用于在數(shù)據(jù)傳輸時對計算機(jī)的定位標(biāo)識(有時也指地理位置)。
由于IP地址 具有不方便記憶并且不能顯示地址組織的名稱和性質(zhì)等缺點,人們設(shè)計出了域名,并通過網(wǎng)域名稱系統(tǒng)(DNS,Domain Name System)來將域名和IP地址 相互映射 ,使人更方便地訪問互聯(lián)網(wǎng) ,而不用去記住能夠被機(jī)器直接讀取的IP地址 數(shù)串。
盡管IP地址 能夠唯一地標(biāo)記網(wǎng)絡(luò)上的計算機(jī) ,但I(xiàn)P地址 是一長串?dāng)?shù)字,不直觀,而且用戶記憶十分不方便,于是人們又發(fā)明了另一套字符型的地址方案,即所謂的域名地址 。IP地址和域名是一一對應(yīng)的,這份域名地址 的信息存放在一個叫域名服務(wù)器 (DNS,Domain name server)的主機(jī)內(nèi),使用者只需了解易記的域名地址,其對應(yīng)轉(zhuǎn)換工作就留給了域名服務(wù)器 。域名服務(wù)器就是提供IP地址和域名之間的轉(zhuǎn)換服務(wù)的服務(wù)器。
本教程就是通過購買一個域名服務(wù),然后自定義一個子域名來達(dá)到訪問跳轉(zhuǎn)主頁的需求。
3.5 域名跳轉(zhuǎn)的實現(xiàn)原理
有了上面的預(yù)備知識,到這我來講下實現(xiàn)自定義域名來跳轉(zhuǎn)到CSDN主頁的原理就比較容易了。
注意,等你真正理解并學(xué)會了這里的配置方法,你可以實現(xiàn)任意域名(當(dāng)然域名后綴得是你的)跳轉(zhuǎn)到你的任意社交主頁,比如我的知乎主頁 (zhihu.recan-li.cn ),我的github主頁(github.recan-li.cn ),我的gitee主頁(gitee.recan-li.cn )。
整一個跳轉(zhuǎn)的原理如下圖所示:

實現(xiàn)跳轉(zhuǎn)主要有以下幾步:
- 瀏覽器輸入自定義的域名:yyds.xxx.com
- 經(jīng)過域名服務(wù)器,解析成公網(wǎng)IP,這個IP就是云服務(wù)器的公網(wǎng)IP;
- 取得IP后,加上默認(rèn)的HTTP端口80,再在HTTP報文頭添加hostname字段,字段填寫自定義的域名,對nginx服務(wù)發(fā)起HTTP連接;
- nginx收到請求后,識別HTTP報文頭的Host字段,然后于nginx的虛擬主機(jī)配置文件中的server_name一個個比對,當(dāng)識別到對應(yīng)的server之后,執(zhí)行代理服務(wù)訪問,訪問的地址由proxy_pass指定;這一步驟就是nginx的反向代理的關(guān)鍵步驟;
- 接著nginx的代理就訪問到Apache2架起的HTTP服務(wù),把其對應(yīng)的index.html通過代理的形式返回,一直返回到瀏覽器中;
- 瀏覽器收到index.html的內(nèi)容后,開始解析;其中有一個html的腳本:
window.location.href="https://blog.csdn.net/szullc";
瀏覽器就會執(zhí)行“地址重定向”,相當(dāng)于重新把這個href的url放到瀏覽器的地址欄進(jìn)行 跳轉(zhuǎn),這一步是html語法定義的,瀏覽器會自動執(zhí)行的,無需人工干預(yù);
- 瀏覽器取得需要跳轉(zhuǎn)的url后,也同樣需要發(fā)起域名解析,經(jīng)過域名服務(wù)器取得對應(yīng)服務(wù)器的IP地址,然后根據(jù)是HTTP還是HTTPS,分別添加80或443端口,訪問真實的服務(wù)器,也就是對應(yīng)我們要跳轉(zhuǎn)到的主頁;
- 待瀏覽器重新跳轉(zhuǎn)完成之后,就會看到對應(yīng)的主頁就顯示出來了,也就是上面展示的那種效果。
3.6 抓包分析
為了進(jìn)一步驗證上面的原理,我們來嘗試抓一下網(wǎng)絡(luò)通訊報文,通過報文一看,便一目了然,任何跳轉(zhuǎn)都逃不過網(wǎng)絡(luò)報文的法眼。
這里需要用到的工具是wireshark抓包工具,關(guān)于wireshark工具,我這里可以簡單介紹一下:
Wireshark(前稱Ethereal)是一個網(wǎng)絡(luò)封包 分析軟件。網(wǎng)絡(luò)封包分析軟件的功能是截取網(wǎng)絡(luò)封包,并盡可能顯示出最為詳細(xì)的網(wǎng)絡(luò)封包資料。Wireshark使用WinPCAP作為接口,直接與網(wǎng)卡進(jìn)行數(shù)據(jù)報文交換。
網(wǎng)絡(luò)管理員 使用Wireshark來檢測網(wǎng)絡(luò)問題,網(wǎng)絡(luò)安全工程師 使用Wireshark來檢查資訊安全相關(guān)問題,開發(fā)者使用Wireshark來為新的通訊協(xié)定除錯,普通使用者使用Wireshark來學(xué)習(xí)網(wǎng)絡(luò)協(xié)定的相關(guān)知識。當(dāng)然,有的人也會“居心叵測 ”的用它來尋找一些敏感信息……
Wireshark不是入侵偵測系統(tǒng)(Intrusion Detection System,IDS )。對于網(wǎng)絡(luò)上的異常流量行為,Wireshark不會產(chǎn)生警示或是任何提示。然而,仔細(xì)分析Wireshark擷取的封包 能夠幫助使用者對于網(wǎng)絡(luò)行為有更清楚的了解。Wireshark不會對網(wǎng)絡(luò)封包 產(chǎn)生內(nèi)容的修改,它只會反映出流通的封包資訊。 Wireshark本身也不會送出封包至網(wǎng)絡(luò)上。
具體如何操作wireshak來抓取網(wǎng)絡(luò),大家可以參考這里的教程:
https://jingyan.baidu.com/article/8cdccae9385fe9315413cda6.html
這里我直接把我這邊抓到的通訊報文放這里,
訪問CSDN主頁網(wǎng)絡(luò)抓包-網(wǎng)絡(luò)安全文檔類資源-CSDN下載
感興趣的可以拿來分析分析。
通過分析報文,發(fā)現(xiàn)真正的訪問過程比我描述的步驟還要多一些,但大體還是按照我說的這個流程來的。
以下做一下簡要的步驟分析:
- 解析yyds.xxx.com域名,獲取IP;

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


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

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

4 你一定還有很多疑問
4.1 如果我沒有云服務(wù)器怎么辦?
如果你只有自己的域名,但沒有自己的公網(wǎng)IP云服務(wù)器,那么你需要找一個別人有云服務(wù)器的朋友(比如我),幫你配置一個端口,然后把端口對應(yīng)的Apache2服務(wù)站點的index.html跳轉(zhuǎn)到你的CSDN主頁,同時在nginx中將server_name配置成你的域名地址,這樣就可以了。
說白了,就是重新走了一遍配置過程,這些配置對于云服務(wù)器是沒有增加多大壓力的,只不過增加了幾個端口的跳轉(zhuǎn)而已。
如果有此需求的朋友,可以關(guān)注我的主頁,然后私信我,我?guī)湍愀愣ā?/p>
4.2 如果我沒有自己的域名怎么辦?
對不起,如果沒有域名的話,就只有通過IP加端口的方式來訪問了;雖然通過域名最終也都是IP和端口進(jìn)行通訊,但是使用IP和端口的方式,有個致命的弱點就是需要記住IP和端口,而這些東西都是一串?dāng)?shù)字,不具備很好的記憶條件。
所以,為了方便,還是建議你買一個域名,域名不貴但是很值。
4.3 如果我不想映射公網(wǎng)端口,會影響域名跳轉(zhuǎn)嗎?
如果不希望別人通過公網(wǎng)IP加端口就訪問到我的服務(wù),那是不是可以把配置的映射端口給刪除了?這樣會不會影響域名跳轉(zhuǎn)呢?
這種情況下,你可以刪掉這個端口的映射的。因為在我們的方案里面,是先通過80端口訪問nginx服務(wù),然后nginx根據(jù)傳入的Host字段,再由代理轉(zhuǎn)發(fā)到指定的端口(端口是由Apache2服務(wù)在監(jiān)聽的),由于nginx和Apache2是在同一臺機(jī)器上,所以可以通過127.0.0.1:xxx的訪問方式,也就是內(nèi)網(wǎng)訪問的方式來訪問,這樣這個xxx端口就不需要映射到公網(wǎng),跳轉(zhuǎn)也是沒有問題的。
4.4 如果某些步驟執(zhí)行完了,達(dá)不到教程的效果怎么辦?
這里給大家提供幾個排查的方法,也就是幾個問題需要重點關(guān)注:
1) 安裝好了Apache2,如果確保這個服務(wù)進(jìn)程已經(jīng)正常運(yùn)行?
使用命令:ps -ef | grep apache2 確認(rèn)下apache2的進(jìn)程是否正常運(yùn)行
2) 配置好了Apache2的CSDN站點,如果確保服務(wù)已經(jīng)正常運(yùn)行?
使用命令:netstat -an | grep 8101
端口號就使用你自己配置的那個,確認(rèn)下端口是否處于LISTEN狀態(tài)。
還可以使用curl http://127.0.0.1:8101
確認(rèn)下index.html能否正常取到。
3) 配置好了Apache2的CSDN站點,通過公網(wǎng)加端口的方式無法訪問。
確認(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
端口號默認(rèn)就是80,確認(rèn)下80端口是否處于LISTEN狀態(tài)。
6) 使用我的域名無法解析,提示DNS解析失敗。
確認(rèn)下DNS域名解析配置是否正確,另外,是否有等5分鐘以上,以便于域名解析生效。
可以使用ping命令ping一下你的域名,正常是可以ping通的。
7) 域名可以解析,但是無法正常跳轉(zhuǎn)到CSDN主頁。
這里需要先確認(rèn)下nginx的虛擬主機(jī)配置的server_name列表里面是否有你要跳轉(zhuǎn)的域名;
其次需要確認(rèn)下nginx配置中跳轉(zhuǎn)到Apache2的端口是否正確。
以上這些簡單的排查方法,基本就可以解決你遇到的問題了。
4.5 能不能只配置Apache2或者nginx就完成相應(yīng)的功能?
在我目前的認(rèn)知里面,應(yīng)該是可行的,一定程度上,Apache2和nginx的功能有重復(fù)的部分。
一開始我也是只配置Apache2,它的配置文件里面也有一個ServerName 字段,理論上可以這里填上你的訪問域名,然后虛擬主機(jī)的監(jiān)聽端口改為80,應(yīng)該是可以跑通的。
單配置nginx來實現(xiàn),也是類似的。
但是可能我操作的過程中哪里搞錯了,最終沒有配置成功。
后面才想到這個Apache2+nginx的組合來完成我的需求,這么搞是已經(jīng)達(dá)到我的目的了,畢竟我不是專業(yè)配置這個的,還需要多學(xué)習(xí)學(xué)習(xí),以后有機(jī)會再試試單獨使用一個服務(wù)來完成。
如果有單用Apache2或nginx就完成了這個需求的朋友,歡迎分享你的配置方法,不甚感激。
5 更多技術(shù)、更多分享
5.1 教程的配置文件下載
本教程中的所有配置文件,我可以毫無保留地分享給大家,包括Apache2的配置文件、csdn跳轉(zhuǎn)的站點配置文件、nginx的配置的文件、Apache2和nginx的啟動停止腳本等等。
這些配置文件是我的主機(jī)上真實在用的配置文件,理論上拿到之后,修修改改,換成自己的配置就能用的。歡迎添加我的VX,我私發(fā)給你。
配置文件壓縮包參考圖:

6 參考資料
- Apache官網(wǎng)
- Apache的介紹:Apache服務(wù)一簡介與安裝南風(fēng)喃的博客-CSDN博客apache服務(wù)
- nginx官網(wǎng)
- nginx是什么?Nginx是什么?能干嘛?_代理
- 使用nginx實現(xiàn)反向代理:使用Nginx實現(xiàn)反向代理飯桶一生奮斗-CSDN博客nginx反向代理
- Apache和nginx的區(qū)別詳解:Nginx 和 Apache 區(qū)別最全詳解? - 云+社區(qū) - 騰訊云
- wireshark官網(wǎng)
- wireshark百度百科:Wireshark_百度百科
- wireshark抓包教程
審核編輯 黃昊宇
-
域名
+關(guān)注
關(guān)注
0文章
75瀏覽量
11463 -
DNS
+關(guān)注
關(guān)注
0文章
222瀏覽量
20219 -
云服務(wù)器
+關(guān)注
關(guān)注
0文章
784瀏覽量
13731
發(fā)布評論請先 登錄
美女手把手教你如何裝機(jī)(中)
手把手教你學(xué)習(xí)FPGA—LED篇
手把手教你安裝Quartus II
手把手教你學(xué)LabVIEW視覺設(shè)計
手把手教你開關(guān)電源PCB排板

評論