Nginx 是一款功能強大的 Web 伺服器,以其高效能和低資源消耗而聞名。它最初是為了處理 C10k 問題而設計的,它在提供靜態內容、負載平衡和反向代理方面表現出色。將 Nginx 與以其穩定性和安全性而聞名的 Debian 結合,可以創造出強大而可靠的伺服器環境。
Nginx 的主要特點:
- 高性能: 有效處理多個並發連線。
- 資源使用率低: 經過最佳化,可以用最少的記憶體和 CPU 運作。
- 負載平衡: 在多個伺服器之間分配流量以提高效能。
- 反向代理: 將客戶端請求無縫轉發到後端伺服器。
- 靜態內容處理: 快速且有效率地提供靜態文件。
- 安全特性: 支援 SSL/TLS 進行加密通訊。
- 靈活性: 支援 HTTP、HTTPS、SMTP、POP3 和 IMAP 等協定。
將 Nginx 與 Debian 結合的好處:
- 穩定: Debian 的穩定性聲譽可確保您的伺服器保持可靠。
- 安全: Debian 強大的安全措施可保護您的 Nginx 伺服器免受漏洞攻擊。
- 使用方便: Debian 的套件管理系統簡化了 Nginx 的安裝和維護。
- 社區支持: Nginx 和 Debian 擁有強大的社區,提供廣泛的資源和支援。
過渡到設定後,您會發現 Debian 的穩定性與 Nginx 的效率完美結合,為您的 Web 應用程式創建了一個理想的環境。讓我們深入研究在 Debian 伺服器上安裝和設定 Nginx 所需的步驟。
安裝 Nginx 之前準備系統
在安裝 Nginx 之前確保您的系統已更新。這可以防止安裝過程中潛在的衝突,並降低相容性問題和安全漏洞的風險。
若要更新系統軟體包,請執行以下命令:
sudo apt update && sudo apt upgrade
此命令取得可用更新的清單(透過 apt update
)然後將目前軟體包升級到最新版本(使用 apt upgrade
).
安裝NGINX'Web伺服器'標準
預設情況下,NGINX 在 Debian 儲存庫中可用。這使得安裝過程變得簡單。
執行以下命令安裝nginx:
sudo apt install nginx
這 apt install
命令告訴 APT 套件處理實用程式(Debian 系統的一部分)安裝 NGINX 套件。
可選:安裝 NGINX 完整版
NGINX 提供了 nginx-full
帶有標準版本中未找到的附加模組的版本。如果您需要更多功能,請安裝 nginx-full 版本:
sudo apt install nginx-full
可選:安裝 NGINX-Extras 版本
對於更廣泛的功能集,請考慮 nginx-extras
版本。安裝:
sudo apt install nginx-extras
驗證 NGINX 安裝
安裝後,確保 NGINX 正常運作。
使用以下命令檢查 NGINX 服務狀態:
systemctl status nginx
如果輸出顯示“活動(正在運行)”,NGINX 就會正常運作。如果不是,輸出將詳細說明錯誤以進行故障排除。
如果未啟用 NGINX,請使用:
sudo systemctl enable nginx --now
為 Nginx 設定 UFW 防火牆
UFW(即簡單防火牆)提供了一個易於使用的介面來管理 iptables 防火牆規則。預設情況下,它沒有安裝在 Debian 上,但您可以從預設儲存庫中取得它。如果您的伺服器具有公共存取權限,則應設定 UFW 規則以確保安全。
安裝UFW防火牆
如果您的系統上尚未安裝 UFW,您可以透過執行以下命令來安裝:
sudo apt install ufw
啟用 UFW 防火牆
安裝完成後,您可以透過執行以下命令啟用 UFW:
sudo ufw enable
UFW 的預設設定阻止所有傳入連線並允許所有傳出連線。這意味著它會停止未經請求的系統訪問,但允許您的系統訪問外部世界。
列出已安裝的應用程式
UFW 使用應用程式設定文件,它們是針對特定應用程式的規則集。若要查看已安裝的具有 UFW 設定檔的應用程序,請執行:
sudo ufw app list
為 NGINX 配置 UFW 規則
根據您的需要,您可以將 UFW 配置為透過 HTTP(連接埠 80)、HTTPS(連接埠 443)或兩者進行 NGINX 連線。
僅適用於 HTTP(連接埠 80):
sudo ufw allow 'Nginx HTTP'
僅 HTTPS(連接埠 443):
sudo ufw allow 'Nginx HTTPS'
HTTP 與 HTTPS:
sudo ufw allow 'Nginx Full'
驗證防火牆規則
若要確認您的規則已到位,請檢查活動的防火牆規則:
sudo ufw status
測試 NGINX 配置
設定 UFW 後,請確保您可以看到 NGINX 登入頁面。在瀏覽器中,前往伺服器的 IP 位址:
http://your_server_ip
或者,對於本地設定:
http://localhost
假設您看到 NGINX 預設頁面;你的配置有效。這結束了 Debian 上 NGINX 的防火牆設定。
建立 NGINX 伺服器塊
與 Apache 的虛擬主機一樣,NGINX 伺服器區塊可讓您從一台伺服器託管多個網域。每個網域都有其配置設定。對於本指南,請將「example.com」替換為您的實際網域。
為您的網域建立目錄
為您的網域設定一個目錄。該目錄將儲存您網站的檔案:
sudo mkdir -p /var/www/example.com/
將所有權分配給 Nginx 目錄
將目錄所有權分配給“www-data”使用者和群組,NGINX 通常使用:
sudo chown -R www-data:www-data /var/www/example.com/
建立 Nginx 測試 HTML 頁面
在您的網域目錄中建立測試 HTML 頁面以確認您的 NGINX 設定:
sudo nano /var/www/example.com/index.html
新增以下 HTML 程式碼:
<html>
<head>
<title>Welcome to Example.com</title>
</head>
<body>
<h1>Success! The NGINX server block is working!</h1>
</body>
</html>
將程式碼貼到 Nano 編輯器後,按 CTRL+O 儲存更改,然後按 CTRL+X 退出編輯器。
為測試頁面建立 NGINX 伺服器塊
為您的網站設定伺服器區塊:
sudo nano /etc/nginx/sites-available/example.com.conf
新增以下配置:
server {
listen 80;
listen [::]:80;
root /var/www/example.com/;
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ =404;
}
}
此配置告訴 NGINX 監聽連接埠 80 上的傳入連接 example.com
和 www.example.com
。請務必更換 root
指令與您先前建立的目錄路徑。
透過符號連結啟用 NGINX 伺服器區塊
透過建立從sites-available目錄到sites-enabled目錄的符號連結來啟用伺服器區塊:
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
最終配置和測試運行
最後,我們將編輯預設的 NGINX 設定檔並執行測試運行以確保一切按預期工作。
編輯 NGINX 設定檔
打開 nginx.conf
文件:
sudo nano /etc/nginx/nginx.conf
尋找線路 server_names_hash_bucket_size 64;
內 http {}
阻止並取消註解它。
該指令允許 NGINX 透過為此目的分配更多記憶體來處理長域名和更多數量的伺服器名稱。但是,請注意不要將此值設定得太高,因為它可能會消耗比所需更多的記憶體。
按 CTRL+O 和 CTRL+X 儲存變更並退出編輯器。
測試您的 NGINX 配置
在繼續並重新啟動 NGINX 之前,最好先驗證您的設定語法是否正確。執行以下命令來啟動測試運行:
sudo nginx -t
如果您的配置正確,您將看到以下輸出:
nginx:設定檔/etc/nginx/nginx.conf語法正確 nginx:設定檔/etc/nginx/nginx.conf測試成功
這些訊息表示您的 NGINX 配置已成功驗證。
驗證您的伺服器區塊
為了確保您的伺服器區塊正常運作,請在 Web 瀏覽器中開啟您的網域。您應該會看到測試頁面,確認您的伺服器區塊處於活動狀態。
附加 Nginx 指令
增強網路伺服器中的檔案安全性
Web 伺服器上文件和資料夾的安全性至關重要。避免過於寬鬆的存取權限。使用這些指令為 webroot 中的所有檔案和目錄設定正確的權限。
記得更換 /var/www/example.com/
與你的網路根路徑:
sudo find /var/www/example.com/ -type d -exec chmod 755 "{}" \;
sudo find /var/www/example.com/ -type f -exec chmod 644 "{}" \;
這些命令為擁有者設定目錄的讀取和執行權限以及檔案的讀寫權限。群組和其他人獲得唯讀存取權限。根據您的應用程式需求調整這些權限。
Nginx 安全性與 Let's Encrypt 免費 SSL 憑證
使用HTTPS協定確保Web伺服器的安全。 Let's Encrypt 提供免費的 SSL 憑證。使用以下命令安裝 certbot 軟體包:
sudo apt install python3-certbot-nginx
然後,啟動證書建立:
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d www.example.com
替換為您的電子郵件和網域。此命令設定具有所需安全功能的 HTTPS。
設定自動證書續訂
Let's Encrypt 憑證有效期限為 90 天。使用 Certbot 腳本設定自動續訂。測試過程:
sudo certbot renew --dry-run
如果成功,在crontab中新增更新指令:
sudo crontab -e
包含此行以每天午夜更新:
00 00 */1 * * /usr/sbin/certbot-auto renew
Nginx 伺服器日誌
監控伺服器日誌以取得維護良好的 Web 伺服器。預設情況下,日誌駐留在 /var/log/nginx
。將它們列出來:
cd /var/log/nginx && ls -l
最相關的日誌檔是 access.log
和 error.log
。若要即時監控日誌,請使用 tail -f
命令後跟日誌路徑:
tail -f /var/log/nginx/access.log
更新 Nginx
在更新 Nginx 伺服器之前,建立目前配置的備份是明智的做法。備份您的主 nginx.conf
文件,使用以下命令:
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx-backup.conf
如果您廣泛自訂了 Nginx 設置,您可能需要備份整個 Nginx 目錄:
sudo cp -r /etc/nginx/ /etc/nginx-bkup
安全備份配置後,現在可以繼續更新 Nginx:
sudo apt update
sudo apt upgrade
定期備份配置是一種很好的做法,尤其是在複雜的設定中。
刪除 Nginx
如果您的伺服器上不再需要 Nginx,可以按照以下步驟將其刪除。首先,確保Nginx服務已停止:
sudo systemctl disable nginx --now
接下來,完全刪除 Nginx 軟體包:
sudo apt remove nginx
您可能仍會在下列位置找到 Nginx 設定的殘餘部分: /etc/nginx
目錄。若要刪除它們,請使用以下命令:
sudo rm -R /etc/nginx/
請記住,這將刪除所有自訂設定文件,因此請確保在繼續此步驟之前備份了所需的所有內容。
在 Nginx 中設定日誌輪轉參數
Nginx 預設包含每日日誌輪替功能。但是,您可以根據需要自訂這些設定。
訪問日誌輪換的配置文件
要修改日誌輪換設置,您需要存取設定檔。以下是使用 Nano 文字編輯器開啟它的方法:
sudo nano /etc/nginx/logrotate.d/nginx
開啟文件後,您將看到類似以下內容的內容。調整此文件中的指令以滿足您的日誌保留和輪換需求,主要是在您使用諸如fail2ban之類的監控工具時。
日誌輪換設定檔範例
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi \
endscript
postrotate
invoke-rc.d nginx rotate >/dev/null 2>&1
endscript
}
了解主要配置參數
在此配置中,系統管理員通常會專注於兩個主要設定:
- 日常的:此設定設定日誌輪換頻率。雖然它預設為“每日”,但您可以將其更改為“每週”或“每月”。然而,每日輪調通常會簡化日誌管理。
- 旋轉 14:這個數字告訴系統要保留多少個日誌檔。例如,設定「14」將保留 14 個最新日誌。如果您只想儲存一週的日誌,請將此數字調整為「7」。
雖然 Nginx 允許您修改其他設置,但更改時請務必小心。在不了解其影響的情況下更改設定可能會導致意外結果。確保修改這些設定以滿足您的需要,而不會導致意外問題。
請記住,沒有一種放諸四海皆準的日誌管理方法。在進行更改之前,請務必評估您的特定環境和要求。
結束語
在本指南中,我們逐步介紹了在 Debian 上設定 Nginx,包括安裝、設定和基本最佳化。透過將 Nginx 的效率與 Debian 的穩定性結合,您已經為您的 Web 伺服器創建了堅實的基礎。請記住保持伺服器更新並探索其他 Nginx 模組以增強功能。如果您遇到任何問題,圍繞 Debian 和 Nginx 的強大社區始終是很好的資源。感謝您的關注,祝您主持愉快!