在Ubuntu上安裝與設定Nginx的完整指南【適合初學者】

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的運行狀態。以下是一些常用的指令:

  1. 啟動Nginx
sudo systemctl start nginx
  1. 停止Nginx
sudo systemctl stop nginx
  1. 重新啟動Nginx
    當設定變更較大時,可能需要完全重新啟動。
sudo systemctl restart nginx
  1. 重新載入設定
    修改設定檔後,可以使用此指令來重新載入設定,而不會影響目前的連線。
sudo systemctl reload nginx
  1. 檢查Nginx的運行狀態
    確認Nginx是否正在正常運行。
sudo systemctl status nginx

設定Nginx自動啟動

為了確保伺服器重新開機後Nginx可以自動啟動,我們可以啟用開機自動啟動功能:

  1. 啟用自動啟動
sudo systemctl enable nginx
  1. 取消自動啟動
    如果不希望Nginx在開機時自動啟動,可以執行以下指令:
sudo systemctl disable nginx

檢查日誌與故障排除

當Nginx運行異常時,可以透過檢查日誌來找出問題的原因。

  1. 查看錯誤日誌
    錯誤日誌存放於以下位置:
sudo tail -f /var/log/nginx/error.log
  1. 查看訪問日誌
    可以檢查用戶的訪問記錄:
sudo tail -f /var/log/nginx/access.log

常見問題與解決方案

  1. Nginx無法啟動
  • 可能的原因:設定檔有錯誤
  • 解決方法:執行以下指令來檢查設定檔是否有錯誤:
sudo nginx -t
  1. 設定變更後沒有生效
  • 可能的原因:Nginx沒有重新載入設定。
  • 解決方法:執行以下指令重新載入設定:
sudo systemctl reload nginx

5. Nginx防火牆與安全性設定

為了保護伺服器的安全,我們需要適當地設定防火牆並加強Nginx的安全性。本節將介紹UFW(Uncomplicated Firewall)與其他安全強化方法。

使用UFW開放Nginx所需的端口

UFW是Ubuntu內建的防火牆工具,我們可以透過它來開放80(HTTP)與443(HTTPS)端口。

  1. 檢查目前的UFW狀態
sudo ufw status
  1. 允許Nginx的連線
sudo ufw allow 'Nginx Full'
  1. 啟用UFW
sudo ufw enable

額外的安全強化設定

  1. 禁用不必要的HTTP請求方法
if ($request_method !~ ^(GET|POST|HEAD)$) {
    return 444;
}
  1. 防止目錄瀏覽
autoindex off;
  1. 強化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!

侍エンジニア塾