介紹
Nginx是世界上最流行的網頁伺服器之一,負責托管一些互聯網上最大和流量最高的網站。它是一個輕量級的選擇,可以用作網頁伺服器或反向代理。
在本指南中,我們將討論如何在您的Ubuntu 22.04伺服器上安裝Nginx,調整防火牆,管理Nginx進程,並設置伺服器區塊以從單個伺服器托管多個域名。
使用DigitalOcean App Platform從GitHub部署您的應用程式。讓DigitalOcean專注於擴展您的應用程式。
先決條件
在開始本指南之前,您應該在您的伺服器上配置了一個常規的非root使用者,該使用者具有sudo特權。您可以通過遵循我們的Ubuntu 22.04初始伺服器設置指南來了解如何配置常規使用者帳戶。
您可能还希望在完成本教程的最后步骤之前选择注册一个域名。要了解如何使用DigitalOcean设置域名,请参阅我们的《介绍DigitalOcean DNS》。
当您有可用的帐户时,请以非root用户登录以开始。
步骤1 – 安装Nginx
由于Nginx可在Ubuntu的默认存储库中找到,因此可以使用apt
打包系统从这些存储库安装它。
由于这是我们在此会话中首次与apt
打包系统互动,我们将更新本地软件包索引,以便访问最新的软件包列表。之后,我们可以安装nginx
:
在提示时按Y
确认安装。如果提示重新启动任何服务,请按ENTER
接受默认设置并继续。apt
将安装Nginx及其所需的任何依赖项到您的服务器。
步骤2 – 调整防火墙
在測試 Nginx 之前,需要配置防火牆軟體以允許訪問服務。安裝時,Nginx 會向 ufw
註冊自己作為服務,因此可以輕鬆地允許 Nginx 訪問。
輸入以下命令列出 ufw
知道如何處理的應用程式配置:
您應該會得到應用程式配置文件的清單:
OutputAvailable applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
如輸出所示,Nginx 有三個可用的配置檔:
- Nginx Full: 此配置檔打開 80 端口(正常、未加密的 Web 流量)和 443 端口(TLS/SSL 加密流量)
- Nginx HTTP: 此配置檔僅打開 80 端口(正常、未加密的 Web 流量)
- Nginx HTTPS: 此配置檔僅打開 443 端口(TLS/SSL 加密流量)
建議您啟用最具限制性但仍允許您配置的流量的配置檔。現在,我們只需要允許 80 端口上的流量。
您可以通過輸入以下命令啟用此配置:
您可以通過輸入以下命令驗證更改:
輸出將指示允許哪些 HTTP 流量:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
步驟 3 – 檢查您的 Web 伺服器
安裝過程結束時,Ubuntu 22.04 會啟動 Nginx。網頁伺服器應已運行。
我們可以使用 systemd
初始化系統來確保服務正在運行,方法如下:
Output● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-03-01 16:08:19 UTC; 3 days ago
Docs: man:nginx(8)
Main PID: 2369 (nginx)
Tasks: 2 (limit: 1153)
Memory: 3.5M
CGroup: /system.slice/nginx.service
├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─2380 nginx: worker process
通過這個輸出確認,服務已成功啟動。不過,測試的最佳方法是實際從 Nginx 請求頁面。
您可以訪問默認的 Nginx 登錄頁面來確認軟件是否正常運行,方法是導航到您的服務器 IP 地址。如果您不知道您的服務器 IP 地址,可以使用 icanhazip.com 工具查找,該工具將給您從互聯網上的其他位置接收到的公共 IP 地址:
獲得您的服務器 IP 地址後,輸入到瀏覽器的地址欄中:
http://your_server_ip
您應該會收到默認的 Nginx 登錄頁面:
如果您看到這個頁面,則您的服務器正確運行並且已準備好被管理。
第四步 – 管理 Nginx 進程
現在您的 Web 服務器已經運行起來了,讓我們來查看一些基本的管理命令。
要停止您的 Web 服務器,輸入:
當服務器停止時,要啟動 Web 服務器,輸入:
要停止然後重新啟動服務,輸入:
如果您僅在進行配置更改,Nginx 可以在不斷開連接的情況下重新加載。要執行此操作,輸入:
預設情況下,Nginx 被配置為在伺服器啟動時自動啟動。如果這不是你想要的,你可以通過輸入以下命令來禁用此行為:
要重新啟用在啟動時啟動服務,你可以輸入:
你現在已經學會了基本的管理命令,應該準備好配置網站以托管多個域名。
第5步 – 設置服務器塊(建議)
在使用 Nginx 網絡伺服器時,服務器塊(類似於 Apache 中的虛擬主機)可用於封裝配置詳細信息,並從單個伺服器上托管多個域名。我們將設置一個名為 your_domain 的域,但你應該 用你自己的域名替換它。
Ubuntu 22.04 上的 Nginx 默認啟用了一個服務器塊,配置為從目錄 /var/www/html
提供文檔。雖然這對於單個站點很有效,但如果你托管多個站點,這可能變得難以管理。我們將在 /var/www
內創建一個目錄結構,為我們的 your_domain 站點保留 /var/www/html
作為預設目錄,如果客戶端請求與其他站點不匹配,則提供服務。
請按照以下步驟創建 your_domain 的目錄,使用 -p
標誌創建任何必要的父目錄:
接下來,使用$USER
環境變數分配目錄的所有權:
如果您沒有修改umask
值,則您的網站根目錄的權限應該是正確的,因為它設置了默認文件權限。為確保您的權限正確並允許所有者讀取、寫入和執行文件,同時僅授予群組和其他人讀取和執行權限,您可以輸入以下命令:
接下來,使用nano
或您喜歡的編輯器創建一個示例index.html
頁面:
在內部添加以下示例HTML:
按Ctrl+X
退出並保存文件,然後在提示時按Y
,然後按Enter
。
為了讓Nginx提供此內容,需要創建一個具有正確指令的服務器塊。而不是直接修改默認配置文件,讓我們在/etc/nginx/sites-available/your_domain
創建一個新的配置文件:
粘貼以下配置塊,它類似於默認配置,但針對我們的新目錄和域名進行了更新:
請注意,我們已將root
配置更新為我們的新目錄,將server_name
更新為我們的域名。
接下來,讓我們通過創建一個從該文件到sites-enabled
目錄的鏈接來啟用文件,Nginx在啟動期間從該目錄中讀取:
注意: Nginx 使用一種常見的做法,稱為符號連結,或稱為符號鏈接(symlinks),來跟踪您的服務器塊中啟用了哪些。創建符號連結就像在磁盤上創建快捷方式一樣,這樣您以後就可以從 sites-enabled
目錄中刪除快捷方式,同時保留 sites-available
中的服務器塊,如果您想要啟用它。
現在啟用了兩個服務器塊,並配置為根據它們的 listen
和 server_name
指令來響應請求(您可以在這裡閱讀更多關於 Nginx 如何處理這些指令的信息 這裡):
your_domain
: 將響應對your_domain
和www.your_domain
的請求。default
: 將響應在端口 80 上不匹配其他兩個塊的任何請求。
為了避免由於添加額外的服務器名稱而可能引起的哈希桶內存問題,有必要調整 /etc/nginx/nginx.conf
文件中的單個值。打開文件:
找到 server_names_hash_bucket_size
指令並刪除 #
符號以取消註釋該行。如果您使用 nano,可以通過按下 CTRL
和 w
快速在文件中搜索單詞。
注意:註釋掉程式碼行 – 通常是在行的開頭加上 #
– 是另一種禁用它們而無需實際刪除它們的方法。許多配置文件都附帶了多個被註釋掉的選項,這樣它們就可以通過在活動代碼和文檔之間切換來啟用或禁用。
...
http {
...
server_names_hash_bucket_size 64;
...
}
...
完成後保存並關閉文件。
接下來,測試以確保您的 Nginx 文件中沒有語法錯誤:
如果沒有任何問題,重新啟動 Nginx 以啟用您的更改:
現在,Nginx 應該正在提供您的域名。您可以通過導航到 http://your_domain
來測試,您應該看到類似以下的內容:
第 6 步 – 熟悉重要的 Nginx 文件和目錄
現在您已經知道如何管理 Nginx 服務本身,您應該花幾分鐘時間熟悉一些重要的目錄和文件。
內容
/var/www/html
:實際的網頁內容,默認情況下僅包含您之前看到的預設 Nginx 頁面,是由/var/www/html
目錄提供的。這可以通過修改 Nginx 配置文件進行更改。
伺服器配置
/etc/nginx
:Nginx 配置目錄。所有的 Nginx 配置文件都位於此處。/etc/nginx/nginx.conf
:主要的 Nginx 配置文件。可以修改此文件以對 Nginx 全局配置進行更改。/etc/nginx/sites-available/
:存儲每個站點服務器塊的目錄。除非將其鏈接到sites-enabled
目錄,否則 Nginx 將不使用此目錄中找到的配置文件。通常,所有的服務器塊配置都在此目錄中完成,然後通過鏈接到其他目錄來啟用。/etc/nginx/sites-enabled/
:存儲已啟用的每個站點服務器塊的目錄。通常,這些是通過鏈接到sites-available
目錄中找到的配置文件創建的。/etc/nginx/snippets
:此目錄包含可以在 Nginx 配置的其他地方包含的配置片段。可重複使用的配置段落是重構為片段的良好候選者。
伺服器日誌
/var/log/nginx/access.log
: 除非 Nginx 配置了其他方式,否則每個對網絡伺服器的請求都會記錄在此日誌文件中。/var/log/nginx/error.log
: 任何 Nginx 錯誤都將記錄在此日誌中。
結論
現在您已經安裝了您的網絡伺服器,您有很多選擇可以提供的內容類型,以及您想要使用的技術來創建更豐富的體驗。
如果您想要構建一個更完整的應用程式堆棧,請查看文章在 Ubuntu 22.04 上安裝 Linux、Nginx、MySQL、PHP(LEMP 堆棧)。
為了使用免費的 SSL 憑證通過 Let’s Encrypt 為您的域名設置 HTTPS,您應該轉到 如何在 Ubuntu 22.04 上使用 Let’s Encrypt 保護 Nginx。
Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-22-04