Skip to content

Nginx

高效能網頁伺服器與反向代理

軟體分類 程式開發 / 伺服器
軟體標籤
樂理創作iQrator推薦軟體最新軟體情報Adobe Animate
開發廠商 F5, Inc. (Originally by Igor Sysoev)
Stars
29.7k
Forks
7.8k
License
2-CLAUSE BSD-LIKE LICENSE
Version
v1.26.2
Update
2026-03-09
OS

產品說明

Nginx (發音同 "Engine X") 是一款以高效能、高併發與低記憶體消耗著稱的網頁伺服器、反向代理伺服器以及電子郵件(IMAP/POP3)代理伺服器。

它最初由俄羅斯工程師 Igor Sysoev 開發,旨在解決著名的 C10k 問題(即如何同時處理一萬個併發連線)。與傳統使用 Process/Thread 模型的 Apache HTTP Server 不同,Nginx 採用了非同步事件驅動 (Asynchronous Event-driven) 架構。這使得它在處理靜態檔案、索引檔案以及自動索引時,效率極高且資源佔用極低。如今,它已成為全球流量最大的網站(如 Netflix, Dropbox, WordPress)背後的首選伺服器軟體,經常作為前端負載平衡器,將流量分發給後端的應用伺服器(如 Python, Ruby, PHP)。

核心特色:

  • 高併發處理:事件驅動架構允許在低硬體配置下處理數萬甚至數十萬的同時連線。
  • 反向代理與負載平衡:內建強大的負載平衡功能(Round Robin, Least Connected, IP Hash),可作為應用程式的統一入口。
  • 靜態內容快取:極致優化的靜態檔案傳輸效能,並支援 FastCGI, uwsgi, SCGI 等快取機制。
  • 模組化設計:支援動態模組載入,可擴充 Gzip 壓縮、SSL/TLS 加密、HTTP/2 與 HTTP/3 (QUIC) 支援。
  • 熱部署 (Hot Deployment):支援在不中斷服務的情況下升級執行檔或重新載入設定檔。

常用指令

Nginx 主要透過修改設定檔 (nginx.conf) 運作,並使用命令列工具進行控制。

服務控制

# 啟動 Nginx
sudo systemctl start nginx
# 或直接執行 binary
sudo nginx

# 停止 Nginx
sudo nginx -s stop

# 優雅停止 (處理完目前的請求後再關閉)
sudo nginx -s quit

# 重新載入設定檔 (不中斷服務,最常用)
sudo nginx -s reload

設定檔檢查與除錯

在重新載入服務之前,務必檢查語法是否正確,避免服務掛掉。

# 檢查設定檔語法是否正確
sudo nginx -t

# 顯示目前的版本與編譯參數
nginx -V

核心設定檔範例 (nginx.conf)

Nginx 的設定檔結構清晰,由區塊 (Block) 組成:

# 定義工作處理程序數量 (通常設為 CPU 核心數)
worker_processes auto;

events {
    worker_connections 1024;
}

http {
    # 包含 MIME 類型定義
    include mime.types;

    # 定義虛擬主機 (Virtual Host)
    server {
        listen 80;
        server_name example.com;

        # 靜態檔案根目錄
        location / {
            root /var/www/html;
            index index.html;
        }

        # 反向代理設定 (轉發給後端 API)
        location /api/ {
            proxy_pass http://localhost:3000;
            proxy_set_header Host $host;
        }
    }
}

進階技巧

  • 反向代理 (Reverse Proxy):這是 Nginx 最強大的功能之一。透過 proxy_pass 指令,你可以隱藏後端真實伺服器的 IP,並統一處理 SSL 憑證與跨網域 (CORS) 設定。
  • 速率限制 (Rate Limiting):為了防止 DDoS 攻擊或暴力破解,可以使用 limit_req_zonelimit_req 指令來限制單一 IP 的請求頻率。
  • URL 重寫 (Rewrite):支援強大的 Regex 規則,可將舊的 URL 結構 301 重新導向到新網址,對 SEO 非常重要。