A sleek office desk setup featuring Apple devices: iMac, MacBook, and iPad.

nginx.conf 最佳配置实践

你提供的 Nginx 配置是一个基础且规范的默认配置,针对生产环境仍有不少优化空间。以下从性能、安全性、稳定性三个维度给出具体优化建议:

一、性能优化

1. 工作进程与连接数

nginx

worker_processes auto;  # 保持auto(自动匹配CPU核心数)
worker_cpu_affinity auto;  # 新增:绑定进程到CPU核心,减少切换开销
worker_rlimit_nofile 65535;  # 新增:提高进程文件描述符限制

events {
    worker_connections 10240;  # 提高连接数(默认768偏小,根据服务器内存调整)
    multi_accept on;  # 开启:一次接受所有新连接
    use epoll;  # 新增:Linux下使用epoll模型(高效I/O多路复用)
}

2. HTTP 传输优化

nginx

http {
    # 新增:TCP优化
    tcp_nodelay on;  # 小数据包不延迟发送(适合交互场景)
    keepalive_timeout 65 60;  # 客户端连接保持超时(服务器65s,响应头告知客户端60s)
    keepalive_requests 1000;  # 单个长连接最大请求数(默认100,提高减少握手开销)

    # 新增:压缩优化
    gzip on;
    gzip_min_length 1k;  # 小于1k不压缩(避免反优化)
    gzip_buffers 16 8k;  # 保持不变
    gzip_comp_level 5;  # 压缩等级从6降为5(平衡CPU与带宽)
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;  # 补充字体、图片等类型
    gzip_proxied expired no-cache no-store private auth;  # 细化代理场景压缩规则

    # 新增:缓存优化(静态资源)
    open_file_cache max=10000 inactive=20s;  # 缓存文件描述符
    open_file_cache_valid 30s;  # 缓存验证时间
    open_file_cache_min_uses 2;  # 最少使用2次才缓存
    open_file_cache_errors on;  # 缓存错误信息
}

二、安全性优化

1. 隐藏敏感信息

nginx

http {
    server_tokens off;  # 关闭响应头中的Nginx版本号(默认注释,建议开启)
    proxy_hide_header X-Powered-By;  # 隐藏后端服务版本(如PHP/Java)
    add_header X-Content-Type-Options "nosniff";  # 新增:防止MIME类型嗅探
    add_header X-Frame-Options "SAMEORIGIN";  # 新增:限制iframe嵌套(仅同源)
    add_header X-XSS-Protection "1; mode=block";  # 新增:开启浏览器XSS过滤
}

2. SSL/TLS 强化(若使用 HTTPS)

nginx

http {
    ssl_protocols TLSv1.2 TLSv1.3;  # 移除TLSv1、TLSv1.1(已不安全)
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;  # 现代加密套件(优先GCM/CHACHA20)
    ssl_prefer_server_ciphers on;  # 保持不变
    ssl_session_cache shared:SSL:10m;  # 新增:SSL会话缓存(10MB约40000会话)
    ssl_session_timeout 1d;  # 新增:会话超时时间(1天)
    ssl_stapling on;  # 新增:开启OCSP stapling(减少SSL握手时间)
    ssl_stapling_verify on;  # 新增:验证OCSP响应
}

三、稳定性与兼容性优化

1. 限制请求与防攻击

nginx

http {
    # 新增:限制请求速率(防DoS)
    limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;  # 单个IP每秒10请求
    limit_req zone=req_limit burst=20 nodelay;  # 突发允许20个请求,不延迟处理

    # 新增:限制并发连接(防CC攻击)
    limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
    limit_conn conn_limit 100;  # 单个IP最大100并发连接

    # 新增:超时设置(避免连接挂起)
    client_body_timeout 10s;  # 客户端发送请求体超时
    client_header_timeout 10s;  # 客户端发送请求头超时
    send_timeout 10s;  # 向客户端发送响应超时
}

2. 其他实用配置

nginx

http {
    # 新增:字符集(避免乱码)
    charset utf-8;

    # 新增:代理缓冲区(反向代理场景)
    proxy_buffering on;
    proxy_buffer_size 4k;
    proxy_buffers 4 32k;

    # 保持:client_max_body_size 64m;(根据业务需求调整,如文件上传场景可增大)
}

四、总结优化项

类别关键优化点
性能提高连接数、开启 epoll、优化压缩等级、增加长连接配置
安全性隐藏版本号、强化 SSL 协议与加密套件、添加安全响应头、限制请求速率
稳定性增加超时设置、限制并发连接、优化文件描述符限制
兼容性补充字符集、配置代理缓冲区、细化缓存规则

优化后建议通过 nginx -t 验证配置有效性,并结合实际业务场景(如静态资源服务、反向代理、高并发 API 等)进一步调整参数(例如静态资源可增加 expires 缓存头)。

个人微信:ssevening

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注