Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Nginx 配置檔 nginx.conf 核心參數中文詳細解析

編輯:Linux 教學

前言

nginx.conf 是 Nginx 行為的中樞神經。本文針對高併發生產環境常見的核心段落(main、events、http、upstream)逐行解析關鍵參數的含義、建議值與調優方向。

1. Main Context(主上下文)

# 執行 worker 進程的用戶與群組,建議用專屬低權限帳號
user www www;

# Worker 進程數,建議 = CPU 核心數(或核心數-1 預留給系統)
worker_processes 8;

# 錯誤日誌路徑與級別 [debug|info|notice|warn|error|crit]
error_log /var/log/nginx/error.log info;

# PID 檔案路徑
pid /var/run/nginx.pid;

# 單一 worker 可開啟的最大檔案描述符數
# 理論值 = ulimit -n / worker_processes,但請求分佈不均,建議直接設為 ulimit -n 同值
worker_rlimit_nofile 65535;

2. Events Context(事件模型與連線數)

events {
    # 事件模型:Linux 2.6+ 用 epoll,FreeBSD 用 kqueue
    use epoll;

    # 單一 worker 最大同時連線數
    # 總最大連線數 = worker_processes * worker_connections
    worker_connections 65535;
}

3. HTTP Context 核心優化參數

http {
    include mime.types;
    default_type application/octet-stream;

    # 服務器名稱 hash 桶大小,防止過長 server_name 導致啟動失敗
    server_names_hash_bucket_size 128;

    # 客戶端請求標頭緩衝區大小
    client_header_buffer_size 32k;
    large_client_header_buffers 4 64k;

    # 客戶端請求主體大小限制(上傳檔案大小上限)
    client_max_body_size 8m;

    # 高效檔案傳輸:開啟 sendfile 零拷貝
    # 下載類大檔案服務可設 off 平衡磁碟/網路 I/O
    sendfile on;

    # 目錄列表功能(下載站常用),預設 off
    autoindex on;

    # TCP 優化:減少小封包、降低延遲
    tcp_nopush on;
    tcp_nodelay on;

    # Keep-Alive 超時時間(秒)
    keepalive_timeout 120;

    # ===== FastCGI 參數(PHP-FPM 等)=====
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fast_cgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 128k;

    # ===== Gzip 壓縮=====
    gzip on;
    gzip_min_length 1k;            # 小於此值不壓縮
    gzip_buffers 4 16k;            # 壓縮緩衝區
    gzip_http_version 1.0;         # 相容舊代理
    gzip_comp_level 2;             # 壓縮等級 1-9,建議 2-4 平衡 CPU/體積
    gzip_types text/plain application/x-javascript text/css application/xml;
    gzip_vary on;                  # 回應加 Vary: Accept-Encoding

    # ===== Upstream 負載均衡範例=====
    upstream blog.ha97.com {
        server 192.168.80.121:80 weight=3;
        server 192.168.80.122:80 weight=2;
        server 192.168.80.123:80 weight=3;
        # 可加 backup、down、max_fails、fail_timeout 等參數
    }
}

關鍵參數調優建議速查表

參數建議值/策略影響面
worker_processesCPU 核心數CPU 利用率、上下文切換
worker_connections65535(配合 ulimit -n)最大併發連線數
sendfileon(靜態檔案);off(大檔下載/磁碟壓力大)零拷貝效能
keepalive_timeout60-120s連線復用、瀏覽器體驗
gzip_comp_level2-4CPU vs 傳輸體積
fastcgi_buffers4 64k / 8 128kFastCGI 回應緩衝
client_max_body_size業務所需上傳上限防止大檔上傳撐爆記憶體

常見誤區提醒

  • 盲目設大 worker_connections 卻未調 ulimit -n:導致 too many open files 錯誤。
  • 開啟 gzip 卻未加 gzip_vary on:CDN/代理可能誤向不支援 gzip 的客戶端送壓縮內容。
  • FastCGI 緩衝區過小:導致大回應寫入臨時檔,增加磁碟 I/O。
  • 未設 server_names_hash_bucket_size:新增長域名時 Nginx 啟動報錯。

總結

Nginx 配置的核心在於「少即是多」:啟用零拷貝、合理限制緩衝區、精準控制壓縮與快取、配置健康檢查的負載均衡。根據實際流量、硬體、業務特性微調上述參數,並持續監控 error.log、access.log 及 nginx -T 檢視生效配置,即可榨乾硬體效能,穩定支撐高併發服務。

Copyright © Windows教程網 All Rights Reserved