部落格建置過程4 - 買網域,然後綁定在自己Server上

2018-08-21

爲你的Server綁定網域(domain)

  • 關於上網這件事... 使用瀏覽器,連線到世界上的某個角落上的某台伺服器,它提供你一些內容,瀏覽器解析這些內容,然後呈現給你看,這件事就叫上網。 今天我們上網使用的通訊協定是HTTP, HTTPS,下面都先暫且用HTTP來稱呼這個通訊協定。 HTTP是TCP的一種應用,瀏覽器在要與server端進行連線前要先進行過三方交握(three-way hand shaking),這個過程就好像:
瀏覽器:天龍A呼叫天龍B,ip在xxx.xxx.xx.xx上的某某Server,你在那裡嗎?在的話請回答我。
某某server:在阿在阿,我alwayls availiable的拉。你那邊也接收得到我吧?
瀏覽器:恩,可以,我傳個測試資料給你。
某某server:喔!我接到你的測試資料了,我們之間的網路連線沒有問題,可以開始傳輸了。

於是瀏覽器 跟 某某Server就開始進行資料傳輸。因為在傳輸之前透過這樣的程序確認彼此之間的連線是已經建立完成的,才開始傳送要傳送的資料,所以可以確定資料的交換是能成功的。

這也代表當瀏覽器想要連線到某台伺服器時,瀏覽器必須要知道該伺服器在網路上的位置 - ip。 但,這不對啊?我們平常上網都是輸入網址,並不是輸入ip,那瀏覽器怎麼知道伺服器的ip?

從網域裡可以查出ip - DNS lookups

DNS - Domain Name System,是今天網際網路的基礎建設之一,當我們在瀏覽器上輸入一個網址按下Enter之後,背後其實發生了這些事情:

  1. 電腦將這個網址上的網域名稱擷取下來,傳送到提供你網路服務的業者(ISP),就台灣來說就是中華電信。
  2. 那個ISP那邊有一套像是電話簿一樣的系統,記錄著每個網域對應的ip位置。
  3. 如果這個ISP那邊找不到這個網域對應的ip位置,它會把他pass給其他的ISP業者(可能是其他國家的ISP業者)。
  4. 只要一找到該網域對應的ip位置,這個ip就會返回給瀏覽器。
  5. 瀏覽器就可以透過這個ip位置與目標伺服器準備進行連線,用的就是上面提到的http的三方交握。

所以網域只是ip位置的一個轉換而已,身為人類,你不會想上某個網站的時候,還要記那些ip數字,所以我們才需要網域,使用一些有意義的文字,或是我們的品牌名稱來做為我們的網域名稱。

之前雖然我說過盡量不要讓人知道你的主機的ip位置...

  • 但是如果我們沒有靠其他CDN業者[1]的幫助的話,我們的ip其實是隱藏不住的...因為只要一連上我們的網站,打開一下瀏覽器的開發者工具就可以知道連線的伺服器的ip位置,比如說這是我連上google.com時,google的ip位置: google_ip_taiwan

    瀏覽器要知道目標伺服器的ip位置才能知道要去哪裡下載資源,所以ip位置其實都是公開的,除非中間再透過一個中間單位,才有可能隱藏。

到GoDaddy上買個網域吧

  • GoDaddy是一間老牌的販售網域的公司,擁有親切的介面與完全公開的價格,來幫助你購買到你想要的網域。
  • 辦一下會員,輸入一下自己想要的網域,GoDaddy的介面都會告訴你價格是多少以及有效期間。
  • 確認完付款後,你就是那個網域的擁有者。
  • GoDady的部分就先這樣就行,等等還會過來設定點東西。

前往Digital Ocean上VPS的主控台,做好DNS setting

  1. 左邊選擇Networking,在這個欄位裡填上剛剛在GoDaddy上買好的網域名稱,按下右邊的Add Domain之後會到設定A指向的頁面。 enter_your_domain

  2. 設定A指向的@:在A指向的tab裡的HOSTNAME欄位裡打上一個@,這個@就是代表我們在GoDaddy上買好的網域名稱[2],然後右邊的欄位裡選好綁定了這個domain的VPS, 下拉選單帶出來的VPS會跟現在是在哪個project底下有關係,不過我們現在只有一個project跟一台VPS,所以應該不可能會選錯。再按下Create Record a_direction_at

  3. 設定A指向的www:在A指向的tab裡的HOSTNAME欄位裡打上一個www,然後右邊的欄位裡選好綁定了這個domain的VPS,下拉選單帶出來的VPS會跟現在是在哪個project底下有關係,不過我們現在只有一個project跟一台VPS,所以應該不可能會選錯。再按下Create Record a_direction_www

  4. 做完上面的兩個步驟後,這個頁面底下應該會有這五個記錄 !dns_record.png NS的那三筆是我們在1.的時候一打上我們的網域名稱時,Digital Ocean就幫我們自動補上了,再加上我們自己設定好的兩個A指向紀錄,總共有5筆。 可以看到Hostname一個有www, 一個沒有, 這可以讓我們之後的網站在網址省略www的情況下,一樣能連線到。

回GoDaddy上設定

  • 登入GoDaddy之後,到DNS管理,底下的這個頁面,選擇網路名稱伺服器,做變更 godaddy_bind_dg

  • 自訂並打上這三個digital ocean預設的NameServers, dg_dns_default

儲存之後等10分鐘

  • 讓GoDaddy做DNS設定的refresh,之後就應該看起來像下面這樣: godaddy_bind_dg

等候ISP更新DNS

先前說到ISP那邊會有一個類似電話簿那樣的機制去記錄網路上的ip對應的網域,現在我們更新了我們主機的ip對應的網域,ISP那邊會做一個重新索引,以讓別人在瀏覽器上網址列輸入我們新買並設定好的網域之後,會自動連線到我們的VPS上。這個過程會花上5分鐘~24小時~~~

查證是否一切設定正確

  • 前往check-host.net,輸入這次我們新買的網域,一切設定正確的話,就應該會看到這個網域正確地連結到你的VPS主機。
  • 別忘了各自測試有www沒有www的網址,都應該要可以正確指向到同一台VPS。
  • 或是如果有照上一篇去設定Nginx的話,瀏覽器上輸入網址就會看到你設定好的網頁!

more reference

  1. 知名的CDN業者像是 cloudflare
    IP洩漏,被人盯上的話可能會被人DDOS攻擊,俗稱被D(我覺得這詞很好玩,所以特別寫出來)
    2018年6月中文世界裡很有名的JS技術部落客 - 阮一峰,他的部落格就被D到主機當機,他寫下了一篇很詳細很值得參考的紀錄
  2. 更多訊息可見StackExchange上的ServerFalut的這則討論

-- end of file--

response