1. 前言
許多人希望在Ubuntu上使用Nginx,但如果是第一次接觸,可能不知道該從哪裡開始。本篇文章將以簡單易懂的方式,逐步介紹如何在Ubuntu環境中安裝、設定及管理Nginx,讓初學者也能輕鬆上手。
什麼是Nginx?
Nginx(發音:Engine-X)是一款高效能的HTTP伺服器和反向代理伺服器。由於其輕量且靈活的特性,被廣泛應用於全球的網站與應用程式中,特別適用於高流量的網站。
在Ubuntu上使用Nginx的優勢
Ubuntu是最受歡迎的Linux發行版之一,與Nginx的相容性良好。由於可以使用APT封包管理系統,安裝與更新變得相當簡單,同時也能確保系統的穩定性與安全性。
閱讀本篇文章後,您將學會:
- 如何在Ubuntu上安裝Nginx
- 基本的設定與管理方式
- 效能調校與故障排除方法
接下來,我們將進入實際操作部分。
2. 在Ubuntu上安裝Nginx的步驟
要在Ubuntu上成功運行Nginx,首先需要正確地安裝它。以下將詳細說明安裝過程。
確認必要的套件
在開始安裝之前,請先確保系統已更新至最新版本。執行以下指令:
sudo apt update
sudo apt upgrade
安裝Nginx
要安裝Nginx,請輸入以下指令:
sudo apt install nginx
此指令將會自動從Ubuntu的APT軟體庫下載並安裝Nginx。
確認安裝是否成功
安裝完成後,可以執行以下指令來檢查Nginx的運行狀態:
sudo systemctl status nginx
如果輸出結果中包含「active(running)」字樣,表示Nginx已成功安裝並正在運行。
設定防火牆
Ubuntu內建UFW(Uncomplicated Firewall),我們可以透過它來允許Nginx的網路流量。
sudo ufw allow 'Nginx Full'
sudo ufw enable
這樣就允許了Nginx使用80(HTTP)與443(HTTPS)端口,讓它能夠正常運行。

3. 在Ubuntu上設定Nginx的基本配置
安裝Nginx後,還需要進行一些基本的設定,以確保它能夠正常運作並發揮最佳效能。
設定檔案的位置與基本架構
Nginx的主要設定檔案存放於以下位置:
- 主設定檔案:
/etc/nginx/nginx.conf
- 網站個別設定檔案:
/etc/nginx/sites-available/
目錄內
一般來說,我們會在sites-available
目錄內建立虛擬主機的設定檔,然後透過符號連結(symlink)將其啟用至sites-enabled
目錄。
設定虛擬主機
透過虛擬主機設定,我們可以在同一台伺服器上管理多個網域或專案。以下範例將設定example.com
:
sudo nano /etc/nginx/sites-available/example.com
然後輸入以下內容:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
儲存後,執行以下指令啟用設定:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
設定SSL/TLS
為了確保網站的安全性,我們可以設定SSL/TLS憑證。使用Let’s Encrypt可以免費獲取SSL憑證。
首先,安裝certbot
:
sudo apt install certbot python3-certbot-nginx
接著執行以下指令,取得並設定SSL憑證:
sudo certbot --nginx -d example.com -d www.example.com
為了確保憑證不會過期,建議設定自動續約。
4. 啟動與管理Nginx
安裝並設定好Nginx後,我們需要學習如何啟動、停止、重新載入設定,並處理可能發生的錯誤。本節將介紹Nginx的基本管理指令,以及常見問題的解決方法。
Nginx的基本指令
在Ubuntu上,我們可以使用systemctl
指令來管理Nginx的運行狀態。以下是一些常用的指令:
- 啟動Nginx
sudo systemctl start nginx
- 停止Nginx
sudo systemctl stop nginx
- 重新啟動Nginx
當設定變更較大時,可能需要完全重新啟動。
sudo systemctl restart nginx
- 重新載入設定
修改設定檔後,可以使用此指令來重新載入設定,而不會影響目前的連線。
sudo systemctl reload nginx
- 檢查Nginx的運行狀態
確認Nginx是否正在正常運行。
sudo systemctl status nginx
設定Nginx自動啟動
為了確保伺服器重新開機後Nginx可以自動啟動,我們可以啟用開機自動啟動功能:
- 啟用自動啟動
sudo systemctl enable nginx
- 取消自動啟動
如果不希望Nginx在開機時自動啟動,可以執行以下指令:
sudo systemctl disable nginx
檢查日誌與故障排除
當Nginx運行異常時,可以透過檢查日誌來找出問題的原因。
- 查看錯誤日誌
錯誤日誌存放於以下位置:
sudo tail -f /var/log/nginx/error.log
- 查看訪問日誌
可以檢查用戶的訪問記錄:
sudo tail -f /var/log/nginx/access.log
常見問題與解決方案
- Nginx無法啟動
- 可能的原因:設定檔有錯誤
- 解決方法:執行以下指令來檢查設定檔是否有錯誤:
sudo nginx -t
- 設定變更後沒有生效
- 可能的原因:Nginx沒有重新載入設定。
- 解決方法:執行以下指令重新載入設定:
sudo systemctl reload nginx
5. Nginx防火牆與安全性設定
為了保護伺服器的安全,我們需要適當地設定防火牆並加強Nginx的安全性。本節將介紹UFW(Uncomplicated Firewall)與其他安全強化方法。
使用UFW開放Nginx所需的端口
UFW是Ubuntu內建的防火牆工具,我們可以透過它來開放80(HTTP)與443(HTTPS)端口。
- 檢查目前的UFW狀態
sudo ufw status
- 允許Nginx的連線
sudo ufw allow 'Nginx Full'
- 啟用UFW
sudo ufw enable
額外的安全強化設定
- 禁用不必要的HTTP請求方法
if ($request_method !~ ^(GET|POST|HEAD)$) {
return 444;
}
- 防止目錄瀏覽
autoindex off;
- 強化SSL/TLS加密
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers HIGH:!aNULL:!MD5;
6. 總結與未來進階學習
本篇文章詳細介紹了如何在Ubuntu上安裝、設定與管理Nginx,從基本操作到安全與效能優化,提供了一個完整的學習指引。
回顧文章內容
- 學習如何在Ubuntu上安裝Nginx並設定虛擬主機。
- 掌握Nginx的基本管理指令,如啟動、停止與重新載入。
- 了解防火牆設定與SSL/TLS加密,提高網站的安全性。
進一步學習的方向
- 學習Nginx的進階設定,如負載平衡與反向代理。
- 探索Nginx的效能優化技術,如快取與HTTP/2設定。
- 使用Ansible或Docker來自動化Nginx的部署與管理。
結語
Nginx是一款功能強大且靈活的網頁伺服器,透過適當的設定與管理,可以用於各種應用場景。希望本篇文章能幫助您順利部署並運行Nginx!