部落格訪客專屬:額外贈送 3 個月免費使用期 + 三年方案 10% 折扣 YSBLOG10
抓住交易

什麼是 Nginx Linux 伺服器?完整的 Linux Web 伺服器指南

最近更新:九月7,2026 9最小讀取 桑吉特喬漢
Nginx 在 Linux 伺服器上

Nginx 在 Linux 伺服器上 是一個高效能、事件驅動的 Web 伺服器和反向代理,能夠有效率地提供靜態文件服務、平衡負載並終止請求。 SSL/TLS,並加速動態應用程式 (PHP(Node.js、Python) 它背後有強大的技術支援。它精簡、可擴展且可靠,使其成為生產環境中現代網站、API 和微服務的理想選擇。

如果你想了解 Nginx 本指南從零開始建立 Linux 伺服器環境,提供實用、逐步的概述。

您將了解如何 Nginx 如何運作、安裝和設定方法、如何啟用 HTTPS,以及如何運用我 12 年以上實務經驗總結出的最佳實踐來優化效能和安全性。 管理主機 堆棧。

什麼是 Nginx 為什麼要在 Linux 上使用它?

Nginx (發音為“engine-x”)是一個開源的Web伺服器和反向代理,旨在以低資源佔用處理大規模並發請求。在Linux系統上, Nginx 由於核心高效的網路協定堆疊以及 systemd、iptables/nftables、SELinux/AppArmor 和軟體套件等工具,該系統得以蓬勃發展。 managers 方便更新。

什麼是 Nginx 為什麼要在 Linux 上使用它?

主要優點包括:

  • 事件驅動、非阻塞式架構,實現高吞吐量。
  • 能夠有效率地從記憶體/磁碟提供靜態資源(影像、CSS、JS)。
  • 反向代理和 負載均衡器 對於上游應用程式(PHP-FPM、Node.js、Python、Go)。
  • 一流的 TLS/HTTP/2 支援、快取、速率限制和請求路由。
  • 使用“伺服器”和“位置”模組進行簡單易懂的配置。

Nginx 作品(簡明英文版)?

Nginx 它使用一個主進程來產生工作進程。每個工作進程異步處理多個連線。與為每個連接創建一個新線程(像舊模型那樣)不同, Nginx 使用 Linux epoll 在單一進程中復用數千個套接字,保持 CPU 高負載下記憶體佔用率低。

使用發行版自備的軟體包 manager. 這些指令 安裝 Nginx啟用自動啟動,並開啟防火牆。

Ubuntu / Debian

sudo apt update
sudo apt install -y nginx
sudo systemctl enable --now nginx
sudo ufw allow 'Nginx Full'  # or: sudo ufw allow 80,443/tcp

RHEL / Rocky Linux / AlmaLinux / CentOS Stream

sudo dnf install -y nginx
sudo systemctl enable --now nginx
# Firewalld
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

確認 Nginx 正在顯示預設頁面:

curl -I http://your_server_ip
# or visit http://server_ip in a browser

Nginx 配置基礎知識

Nginx 組態 配置位於 `/etc/nginx/nginx.conf` 檔案中,包含來自 `/etc/nginx/sites-available`(Debian/Ubuntu)的網站檔案或定義在 `/etc/nginx/conf.d`(RHEL 系列)中的伺服器區塊。重新載入配置前務必先進行測試。

sudo nginx -t
sudo systemctl reload nginx

靜態網站伺服器區塊

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com/public;
    index index.html;

    access_log /var/log/nginx/example.access.log;
    error_log  /var/log/nginx/example.error.log warn;

    location / {
        try_files $uri $uri/ =404;
    }
}

在 Debian/Ubuntu 系統上啟用網站:

sudo ln -s /etc/nginx/sites-available/example.conf /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

應用程式反向代理(Node.js、Python、Go)

upstream app_backend {
    server 127.0.0.1:3000 keepalive=32;
}

server {
    listen 80;
    server_name app.example.com;

    location / {
        proxy_pass http://app_backend;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

PHP - PHP-FPM(FastCGI)

server {
    listen 80;
    server_name php.example.com;
    root /var/www/php.example.com/public;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ .php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock; # adjust version/socket
    }
}

使用 Let's Encrypt 啟用 HTTPS(免費) SSL/TLS)

使用 Certbot 來設定和自動續約憑證。這增加了 SSL 並且可以啟用 HTTP / 2。

# Ubuntu/Debian
sudo apt install -y certbot python3-certbot-nginx
# RHEL/Rocky/Alma
sudo dnf install -y certbot python3-certbot-nginx

# Issue and auto-configure
sudo certbot --nginx -d example.com -d www.example.com

# Test renewal
sudo certbot renew --dry-run
server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:TLS_AES_128_GCM_SHA256';
    ssl_prefer_server_ciphers off;

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options SAMEORIGIN;

    # ... rest of config
}

性能調優 Nginx 在Linux上

先採用合理的預設值,再根據測量結果進行調整。重點關注 CPU記憶體和磁碟 I/O。

nginx.conf 中的核心調優

worker_processes auto;
events {
    worker_connections  4096;
    multi_accept on;
}
http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout  65;

    gzip on;
    gzip_types text/plain text/css application/javascript application/json image/svg+xml;

    # Optional micro-caching for dynamic content
    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=STATIC:100m max_size=1g inactive=30m use_temp_path=off;

    # Include your sites
    include /etc/nginx/conf.d/*.conf;
}

能帶來實際效果的技巧:

  • 使用 worker_processes auto 來匹配 CPU 核心。
  • 啟用基於 TLS 的 HTTP/2,實現多路復用和頭部壓縮。
  • 使用長緩存提供靜態資源 標頭和遙遠的未來過期時間.
  • 當全域延遲至關重要時,將靜態資料卸載到 CDN。
  • 為可快取的 API 回應和 CMS 頁面啟用 proxy_cache(較短的 TTL)。

安全加固要點

  • 保持 Nginx 和開放SSL 透過 apt/dnf 進行更新,並安排無人值守升級。
  • 禁用版本公開: server_tokens 關閉;在 http 程式碼區塊中。
  • 使用強TLS,啟用HSTS, 重定向 HTTP 轉為 HTTPS。
  • 對濫用端點(例如登入端點)進行速率限制:
http {
    limit_req_zone $binary_remote_addr zone=logins:10m rate=10r/m;
    server {
        location = /wp-login.php {
            limit_req zone=logins burst=20 nodelay;
            proxy_pass http://php_backend;
        }
    }
}
  • 強化請求大小: client_max_body_size 10m;以及逾時。
  • 使用WAF(例如, Nginx 如果風險較高,請使用 App Protect、ModSecurity 等工具。
  • 透過 IP 允許清單或 HTTP 驗證保護管理面板。
  • 在 SELinux 系統中,為 Web 根目錄和套接字設定正確的上下文。

故障排除 Nginx 像專業人士

  • 驗證配置: sudo nginx -t 然後 sudo systemctl reload nginx
  • 檢查日誌: tail -f /var/log/nginx/error.log 和 access.log
  • 服務健康狀況: systemctl status nginx; journalctl -u nginx
  • 連接埠綁定: SS-tulpen | grep -E ':80|:443'
  • SELinux 拒絕: ausearch -m avc -ts recent; restorecon -Rv /var/www/site
  • 上游可達性: curl -I http://127.0.0.1:3000/

Nginx 與 Apache: 你應該選擇哪個?

  • Nginx 在並發處理和靜態內容方面表現出色,在高負載下佔用記憶體更少。
  • Apache 提供豐富的 .htaccess 靈活性和深厚的模組生態系統。
  • 許多技術棧同時使用這兩種方法: Nginx 作為反向代理/前端代理, Apache/PHP-FPM落後。
  • 對於高流量網站和 API, Nginx 通常情況下,它是預設的前端。

Linux 伺服器上的常見用例

  • 主機 WordPress 或透過 CMS 網站 Nginx + PHP-FPM,支援全頁快取。
  • 反向代理到 Node.js/Express、Django、Flask、Laravel 或 Go 服務。
  • 具有基於路徑的路由和支援 JWT 的上游的微服務閘道。
  • 使用 gzip/Brotli 和不可變快取頭的靜態網站託管。
  • SSL 在傳統應用程式前端進行終止和HTTP/2多路復用。

日誌、指標和可觀測性

  • 存取/錯誤日誌:使用 GoAccess 進行分析或傳送至 ELK/Graylog。
  • 狀態指標:nginx stub_status 或 Nginx 普羅米修斯出口商。
  • 日誌輪替:確保配置了 logrotate 以防止磁碟空間被填滿。
  • SLO:追蹤 p95/p99 延遲、錯誤率和活動連線數。

你會重複使用的真實世界設定程式碼片段

強制使用 HTTPS 和非 WWW

server {
    listen 80;
    server_name www.example.com example.com;
    return 301 https://example.com$request_uri;
}

靜態快取標頭

location ~* .(css|js|jpg|jpeg|png|gif|svg|webp|ico)$ {
    expires 30d;
    add_header Cache-Control "public, immutable";
    access_log off;
}

動態頁面微緩存(短 TTL)

proxy_cache_path /var/cache/nginx/micro levels=1 keys_zone=MICRO:50m max_size=500m inactive=10m;

server {
    location / {
        proxy_cache MICRO;
        proxy_cache_valid 200 301 302 5s;
        proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
        add_header X-Cache $upstream_cache_status;
        proxy_pass http://php_backend;
    }
}

經濟實惠的主機代管技巧

如果您喜歡即刻可用的環境, YouStable 提供 Linux 主機方案 Nginx 針對 HTTP/2、TLS、快取進行了最佳化, PHP-FPM開箱即用。我們的團隊可以設定伺服器區塊, SSL並進行監控,以便您可以專注於您的應用程序,而我們將處理技術堆疊。

最佳實踐清單(快速參考)

  • 使用最新的 LTS Linux 並保持 Nginx 更新。
  • 使用 Let's Encrypt 和 HTTP/2 啟用 HTTPS。
  • 透過以下方式提供靜態資源 Nginx積極緩存。
  • 反向代理動態應用;保持上游伺服器健康。
  • 調整工作進程、保持連線和 gzip 壓縮;衡量結果。
  • 加強 TLS 加密、限制速率並限制管理員存取權限。
  • 監控日誌並公開指標,以便進行容量規劃。

常見問題:

什麼是 Nginx 用於 Linux 伺服器嗎?

Nginx 提供靜態檔案服務,充當應用伺服器的反向代理,進行流量負載平衡,並終止 SSL/TLS。由於其事件驅動架構和低記憶體佔用,它是高流量網站的首選。

如何安裝和啟動 Nginx 在Ubuntu系統上?

運行:sudo apt update && sudo apt install -y nginx,然後運行 sudo systemctl enable --now nginx。使用 sudo ufw allow 允許連接埠。Nginx 已完成。請造訪您的伺服器 IP 位址以確認其正在運作。

Nginx vs Apache哪個比較快?

Nginx 通常能更有效率地處理並發連接,並更快提供靜態內容。 Apache 提供靈活的 .htaccess 檔案和強大的模組。許多生產環境都使用它們。 Nginx 在前面 Apache/PHP-FPM,兼具兩者之長。

如何在 Let's Encrypt 上啟用 HTTPS Nginx?

安裝 Certbot 及其 Nginx 插入插件後,執行 sudo certbot –nginx -d yourdomain -d www.yourdomain。 Certbot 會進行設定。 SSL/TLS 並設定自動續期。使用 sudo certbot renew --dry-run 進行測試。

如何加快速度 Nginx?

使用自動執行 worker_processes 設定;調整 worker_connections;啟用 gzip 壓縮;直接提供靜態檔案;啟用 HTTP/2;為動態頁面新增微型快取;並在前端部署 CDN 以處理全球流量。透過日誌和指標來衡量改進效果。

發表評論

您的電子郵件地址不會被公開。帶*號的為必填項。

回到頁首