如何在 Ubuntu 18.04/20.04 上配置 Nginx 服務器塊

在 Nginx 中, 服務器塊 用於定義特定的域信息。 它有助於託管多個域或網站。 每個塊都包含特定的域信息,例如文檔根、SSL、端口等。 Nginx 服務器塊類似於 Apache 虛擬主機。

在本教程中,我們將學習如何 配置 Nginx 服務器塊 在 Ubuntu 上 18.04/20.04.

先決條件

需要 Ubuntu 18.04/20.04 實例。 該實例應該安裝了 Nginx。 需要用戶 sudo 使用權。

步驟 1. 創建目錄結構

文檔根目錄是存儲域名網站文件並響應請求提供服務的目錄。 我們可以將文檔根目錄設置為我們想要的任何位置,但在本文中,我們將使用以下目錄結構:

/var/www/
├── domain1.com
│   └── images
│ └── index.html
│ └── style.css
├── domain2.net
│   └── images
│ └── index.html
│ └── style.css

基本上,我們將為我們想要在我們的服務器上託管的每個域創建一個單獨的目錄 /var/www 目錄。

讓我們為我們的域創建根目錄:

$ sudo mkdir -p /var/www/domain1.com

出於測試目的,我們將在域的文檔根目錄中創建 index.html、style.css 文件和圖像目錄。

$ cd /var/www/domain1.com/
/var/www/domain1.com$ sudo mkdir images index.html style.css

打開我們的編輯器並創建演示文件:

/var/www/domain1.com/index.html

<!DOCTYPE html> <html lang="en" dir="ltr">

<head> <meta charset="utf-8">

<title>Welcome to domain1.com</title> <link rel="stylesheet" href="https://linoxide.com/configure-nginx-server-blocks-ubuntu/style.css"/>

</head>

<body> <h1 style="color:green;text-align:center;">Success! domain1.com home page!</h1>

</body>

</html>

在這裡,我們正在運行命令 sudo 用戶和新創建的文件和目錄歸 root 用戶。

為了避免任何權限問題,我們可以將域文檔根目錄的所有權更改為 Nginx 用戶 (www-data)

$ sudo chown -R www-data: /var/www/domain1.com

我們將對 domain2.net

步驟 2. 為每個域創建 Nginx 服務器塊文件

現在我們有了想要提供的內容,我們需要實際創建服務器塊來告訴 Nginx 如何做到這一點。

默認情況下,Nginx 包含一個名為的服務器塊 dfault 我們可以將其用作我們自己配置的模板。 我們將從設計第一個域的服務器塊開始,然後將其複製到我們的第二個域並進行必要的修改。

1) 創建第一個 Nginx 服務器塊文件

如上所述,我們將通過複製默認文件來創建我們的第一個服務器塊配置文件:

$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/domain1.com

現在,打開您在文本編輯器中創建的新文件 sudo 特權:

$ sudo nano /etc/nginx/sites-available/domain1.com

編輯文件後,它看起來類似於:

/etc/nginx/sites-available/domain1.com

server {

listen 80;

listen [::]:80;

root /var/www/domain1.com;

index index.html index.htm index.nginx-debian.html;

server_name domain1.com www.domain1.com;

location /

{ try_files $uri $uri/ =404;

}
}

這就是我們需要的基本配置。 Save 和 close 要退出的文件 Ctrl + x.

2) 創建第二個 Nginx 服務器塊文件

現在我們有了第一個 Nginx 服務器塊配置,我們可以將其用作第二個文件的基礎。 複製它以創建一個新文件:

$ sudo cp /etc/nginx/sites-available/domain1.com /etc/nginx/sites-available/domain2.net

打開新文件 sudo 在您的編輯器中的特權:

$ sudo nano /etc/nginx/sites-available/domain2.net

調整根指令以指向我們的第二個域的文檔 root 並調整 server_name 匹配您的第二個站點的域名(確保包含所有別名)。

完成後,我們的文件可能如下所示:

/etc/nginx/sites-available/domain2.net

server {

listen 80;

listen [::]:80;

root /var/www/domain2.net;

index index.html index.htm index.nginx-debian.html;

server_name domain2.net www.domain2.net;

location /

{ try_files $uri $uri/ =404;

}
}

Save 和 close 要退出的文件 Ctrl + x.

第 3 步。啟用我們的 Nginx 服務器塊並重新啟動 Nginx

現在我們有了服務器塊文件,我們需要啟用它們。 我們可以通過創建從這些文件到 sites-enabled 目錄,Nginx 在啟動期間讀取的目錄。

我們可以通過鍵入以下內容來創建這些鏈接:

$ sudo ln -s /etc/nginx/sites-available/domain1.com /etc/nginx/sites-enabled/
$ sudo ln -s /etc/nginx/sites-available/domain2.net /etc/nginx/sites-enabled/

這些文件現在位於 enabled 目錄中,我們現在啟用了三個服務器塊:

1. domain1.com:將響應對 domain1.com 和 www.domain1.com 的請求
2. domain2.net:將響應對 domain2.net 和 www.domain2.net 的請求
3. default:將響應80端口上與其他兩個塊不匹配的任何請求。

為了避免由於添加額外的服務器名稱而可能出現的哈希桶內存問題,我們將繼續調整 /etc/nginx/nginx.conf 文件中的單個值。 現在打開文件:

$ sudo nano /etc/nginx/nginx.conf

在文件中,找到 server_names_hash_bucket_size 指示。 除掉 # 取消註釋行的符號:

/etc/nginx/nginx.conf

http { . . . server_names_hash_bucket_size 64; . . . }

Save 和 close 完成後的文件。

接下來,測試以確保我們的任何 Nginx 文件中都沒有語法錯誤:

$ sudo nginx -t

如果沒有發現問題,重啟 Nginx 以啟用我們的更改:

$ sudo systemctl restart nginx

Nginx 現在應該為我們的兩個域名提供服務。

步驟 4. 通過訪問網站進行驗證

現在我們都設置好了,我們應該測試我們的服務器塊是否正常運行。 我們可以通過訪問我們的網絡瀏覽器中的域來做到這一點:

https://domain1.com

您應該會看到如下所示的頁面:

如果您訪問您的第二個域名,您應該會看到一個略有不同的站點:

https://domain2.net

域2

結論

在本教程中,我們學習瞭如何在 Ubuntu 18.04/20.04 上配置 Nginx 服務器塊。 使用 Nginx 服務器塊,我們設置了兩個域來服務 Web 請求。