相對於前面的幾個部分,一機多站的設定就相當簡單了。

 

前情提要:

Fedora 29 架站實務 之 Part 8 nginx 設定檔與網站放哪裡 ?

 

什麼是DNS ?:

 

當拿起手機想打給某人時,你會先去通訊錄找這個人的名字再請軟體撥出,還是直接開啟撥號鍵盤直接撥打完整的電話號碼呢 ? 相信大部分的情形都會選擇先開啟通訊錄,再撥號。

有意義的文字比起無意義的數字來的容易記憶也較為方便,但可惜的是在網際網路通訊系統中,實際上是看IP位址與各節點路由器的路由表來決定如何到達目的地的。這對上網可是一大不便,想想看當上網的時候還要輸入216.58.200.227來連上Google這是多麼麻煩的事情,所以便有了DNS。運作原理是當使用者輸入一個DNS名稱時,其規定的DNS伺服器會找出與名稱相對應的IP位置回傳給電腦,這樣使用者不需要辛辛苦苦地記得各個網站的IP位置,只要知道簡單的DNS名稱即可。

 

 

那一機多站… 這樣不是不合理嗎 ?:

 

難道這樣不需要多個IP對應多個DNS位置嗎 ? 那麼多DNS位置對應到同一個IP位置,怎麼可能可以顯示不一樣的東西 ? Web Server 不是只有一台嗎 ? 其實只要注意一下一個正常的HTTP要求的指令,就會看出端睨:

GET / HTTP/1.1

HOST: www.google.com.tw

 

是的,縱使DNS解譯出的IP位置一樣,但HTTP要求中含有HOST這行,足以讓網頁伺服器知道你要存取的是哪個DNS位置對應的網站。

 

 

在開始之前:

 

 由於DNS名稱申請並非唾手可得,需要手續,且也不是本章的重點,故在此不論述。

為了實驗我們申請了兩組DNS位置: ckip.x.x.tw, dc.x.x.tw 兩組都對應到134.0.0.151,而機器也因本次Demo暫時從134.0.0.136 改為 134.0.0.151

 

 

確認你的DNS位置是不是已經生效:

 

$ nslookup [你申請DNS位置]

 

 

 

開始前請注意:

 

請先至少將Part 78看完,這裡我們將直接示範撰寫nginx 設定檔案。關於root 資料夾的規定與SELinux應該注意之事項,這裡不會再提及:

 

 

既然要一機多站,就不可能讓置放網頁的資料夾位置相同,於是我們作了以下規劃:

 

/data/www/ckip/ 對應 ckip.x.x.tw

/data/www/dc/ 對應 dc.x.x.tw

 

 

建立資料夾:

 

# mkdir /data/www/ckip

# mkdir /data/www/dc

 

 

 

裡面各建立一個test.html檔案:

 

# nano /data/www/ckip/test.html

# nano /data/www/dc/test.html

 

 

ckiptest.html

<html>

<title>CKIP TEST</title>

<body>

<h1>THIS IS CKIP</h1>

</body>

</html>

 

dctest.html

<html>

<title>DC TEST</title>

<body>

<h1>THIS IS DC</h1>

</body>

</html>

 

 

將這兩個資料夾(包含裡面的檔案)設定權限給nginx:

 

# chown -R nginx.nginx /data/www/ckip/

# chown -R nginx.nginx /data/www/dc/

 

 

 

然後再設定這兩個資料夾的SELinux權限:

 

# semanage fcontext -a -t httpd_sys_rw_content_t “/data/www/ckip(/.*)?”

# restorecon -Rv /data/www/ckip/

# semanage fcontext -a -t httpd_sys_rw_content_t “/data/www/dc(/.*)?”

# restorecon -Rv /data/www/dc/

 

 

 

開始撰寫Nginx 設定檔案:

 

基本上不困難,先複製兩個server Block{},會使得你的nginx 設定檔案看起來像這樣:

 

 

第一個server Block{}不要做任何更改,我們只改第二個與第三個:

 

 

 

備註:

預設的server Block{} (也就是server_name _; 的那個),是無論如何都需要存在的,刪掉預設的Server Block 會導致nginx 拒絕連線。

 

 

重新啟動nginx:

 

# nginx -t

# systemctl restart nginx

 

 

 

接下來開啟網頁瀏覽器:

 

輸入 ckip.x.x.tw/test.html dc.x.x.tw/test.html

如果有看到顯示不一樣的內容才代表設定正確喔。

 

文章標籤
全站熱搜
創作者介紹
創作者 狼志浩 的頭像
狼志浩

What's Up? 簡單寫

狼志浩 發表在 痞客邦 留言(0) 人氣(78)