使用 Apache 或 Nginx 在一台服务器或 IP 上托管多个域

讓我們一起探討如何在Apache和Nginx上配置多個網站託管。

相較於共用託管,在雲伺服器上託管網站提供了更大的彈性。您可以安裝任何您需要的軟體,根據需求進行擴展或縮減,並進行配置以獲得更好的效能和成本優化。

如果您有多個業務網站,但又不想將它們分開託管,您可以利用Web伺服器的虛擬主機功能。讓我們來看看這個情境。

假設我擁有以下兩個網站,並且希望將它們指向我的同一個雲端虛擬機。

在實施之前,讓我們先了解其運作原理。

在單一Web伺服器實例上託管多個網站的概念稱為虛擬主機。它與URL一起在設定檔中定義。當向定義的URL發出請求時,Web伺服器將會從相應的文檔根目錄提供內容。

在Apache中設定虛擬主機以託管多個網域

  • 登入Apache HTTP伺服器。
  • 前往Apache設定檔所在位置。(在預設安裝中,您會在/etc/httpd/conf/httpd.conf找到它)
  • 備份 httpd.conf 文件。
  • 創建一個VirtualHost容器,就像我為兩個網域所做的那樣。
<VirtualHost *:80>
ServerAdmin [email protected]
   DocumentRoot /opt/htdocs/lab
   ServerName lab.techblik.com.com
   ErrorLog logs/lab.techblik.com.com-error_log
   CustomLog logs/lab.techblik.com.com-access_log common
</VirtualHost>

<VirtualHost *:80>
   ServerAdmin [email protected]
   DocumentRoot /opt/htdocs/gf-dev
   ServerName gf.dev
   ErrorLog logs/gf.dev-error_log
   CustomLog logs/gf.dev-access_log common
</VirtualHost>

注意:請根據您的需求修改ServerAdmin、DocumentRoot、ServerName、ErrorLog、CustomLog的值。

  • 重新啟動Apache HTTP並測試這兩個URL。

在Nginx中設定虛擬主機以託管多個網域

  • 登入Nginx伺服器。
  • 前往您安裝Nginx的位置。(在預設位置,您會在/etc/nginx/找到它)

有多種方法可以實現這一目標。您可以修改nginx.conf檔案,或修改自訂檔案(如果有的話)。您也可以在conf.d資料夾下創建一個custom.conf。如果您修改現有檔案,請選擇適合您的並進行備份。

  • 為這兩個URL創建一個伺服器區塊,如下所示。
server {
listen 80;
   root /opt/htdocs/lab;
index index.html index.htm;
   server_name lab.techblik.com.com;
   location / {
       try_files $uri $uri/ =404;
   }
}

server {
   listen 80;
   root /opt/htdocs/gf-dev;
   index index.html index.htm;
   server_name gf.dev;
   location / {
       try_files $uri $uri/ =404;
   }
}

注意:請根據您的需求修改root和server_name的值。

  • 重新啟動Nginx並測試這兩個URL。

別忘了更新您的URL的DNS記錄,以對應到伺服器IP。完成後,您應該可以存取透過上述設定提供的URL。

結論

這是在單一Web伺服器實例(如Apache或Nginx)中託管多個網域的快速指南。一旦您的網站上線,請不要忘記針對安全漏洞對其進行測試。

喜歡這篇文章嗎?何不與大家分享?