Nginx 核心配置说明

Nginx 核心配置

—— 性能优化、安全、反向代理与调优指南


一、基础配置

1. 工作进程与连接数

参数 作用 推荐值 示例配置
worker_processes 工作进程数量(CPU核心数) auto 或 CPU核心数 worker_processes auto;
worker_rlimit_nofile 每个进程可打开的文件描述符上限 worker_connections worker_rlimit_nofile 65535;
worker_connections 每个进程的最大并发连接数 根据内存和并发量调整(如 4096) worker_connections 4096;

总并发连接数 = worker_processes × worker_connections
(例如:4核CPU × 4096 = 16,384并发)


二、性能优化

1. 网络传输

参数 作用 推荐值 示例配置
sendfile on 启用零拷贝技术(提升静态文件传输) on sendfile on;
tcp_nopush on 数据包填满后发送(减少小包) on(需 sendfile tcp_nopush on;
tcp_nodelay on 禁用Nagle算法(低延迟场景) on(如WebSocket) tcp_nodelay on;

2. 连接管理

参数 作用 推荐值 示例配置
keepalive_timeout 客户端长连接超时时间 60-120秒 keepalive_timeout 65;
keepalive_requests 单个长连接处理的请求数 100-1000 keepalive_requests 100;
multi_accept on 进程一次性接受所有新连接 高并发时启用 multi_accept on;

3. 压缩与缓存

参数 作用 推荐值 示例配置
gzip on 启用响应压缩 on gzip on;
gzip_types 指定压缩的文件类型 文本/JSON/CSS/JS gzip_types text/css application/json;
open_file_cache 缓存文件描述符(减少IO开销) 根据文件访问频率调整 open_file_cache max=1000 inactive=20s;

三、安全配置

1. 基础安全

参数 作用 推荐值 示例配置
server_tokens off 隐藏Nginx版本号 off server_tokens off;
client_max_body_size 限制客户端请求体大小(防攻击) 10m client_max_body_size 10m;

2. 访问控制

location /admin {
    allow 192.168.1.0/24;  # 允许的IP段
    deny all;              # 其他全部拒绝
}

3. SSL/TLS 强化

ssl_protocols TLSv1.2 TLSv1.3;  # 禁用老旧协议
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
ssl_session_timeout 1d;         # SSL会话缓存时间

四、反向代理与负载均衡

1. Upstream 配置

upstream backend {
    server 10.0.0.1:80 weight=3;  # 权重3
    server 10.0.0.2:80;
    keepalive 32;                 # 后端连接池大小
}

server {
    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
    }
}

2. 代理缓存

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
server {
    location / {
        proxy_cache my_cache;
        proxy_cache_valid 200 302 10m;  # 缓存200/302响应10分钟
    }
}

五、日志与监控

1. 日志格式

log_format main '$remote_addr - $request_time "$request"';
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log warn;  # 错误日志级别(debug/info/warn/error)

2. 关键变量

  • $remote_addr:客户端IP
  • $request_time:请求处理时间
  • $status:HTTP状态码

六、完整配置示例

user www-data;
worker_processes auto;
worker_rlimit_nofile 65535;

events {
    worker_connections 4096;
    multi_accept on;
}

http {
    sendfile on;
    tcp_nopush on;
    keepalive_timeout 65;
    gzip on;
    server_tokens off;

    upstream backend {
        server 10.0.0.1:80;
        keepalive 32;
    }

    server {
        listen 80;
        client_max_body_size 10m;

        location / {
            proxy_pass http://backend;
            proxy_cache my_cache;
        }
    }
}

七、调优建议

  1. 压测工具:用 abwrkjmeter 测试并发能力。
  2. 系统限制
    • 检查文件描述符限制:ulimit -n,修改 /etc/security/limits.conf
  3. 监控指标
    • 活跃连接数:netstat -anp \| grep nginx \| wc -l
    • 错误日志:tail -f /var/log/nginx/error.log

附:配置优先级
全局块 → events块 → http块 → server块 → location块

posted @ 2025-07-11 15:24  槑孒  阅读(34)  评论(0)    收藏  举报