1. 更新Nginx与SSL证书至最新版本
确保系统安装最新版本的Nginx(通过sudo apt update && sudo apt upgrade nginx)和SSL证书(如Let’s Encrypt证书),以获取最新的安全补丁与性能优化。Let’s Encrypt证书可通过Certbot自动续期,避免过期导致的性能下降或服务中断。
2. 启用HTTP/2协议
HTTP/2支持多路复用(Multiplexing)与头部压缩(HPACK),能显著减少延迟并提高并发处理能力。在Nginx配置文件的server块中添加listen 443 ssl http2;指令即可启用(需确保OpenSSL版本≥1.0.2)。
3. 优化SSL/TLS协议与加密套件
ssl_protocols TLSv1.2 TLSv1.3;),禁用SSLv3、TLSv1.0/1.1等存在漏洞的协议。ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';),并通过ssl_prefer_server_ciphers on;让服务器优先选择更安全的套件。4. 配置SSL会话缓存与会话票据
ssl_session_cache shared:SSL:10m;设置共享会话缓存(10MB,可存储约4000个会话),ssl_session_timeout 10m;设置会话超时时间为10分钟,减少重复握手次数。ssl_session_tickets off;(可选),避免会话票据带来的安全风险(如重放攻击),但可能略微增加握手时间。5. 启用OCSP Stapling
OCSP Stapling允许服务器主动获取证书状态(而非客户端查询),减少SSL握手时间。配置如下:
ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 5s; 需确保证书链完整(包含中间证书)。
6. 启用HSTS(HTTP Strict Transport Security)
通过add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;指令,强制浏览器仅通过HTTPS访问网站,避免HTTP降级攻击,同时减少后续请求的SSL握手次数。
7. 调整Nginx工作进程与连接数
worker_processes auto;),充分利用多核CPU性能。worker_connections 1024;(可根据服务器负载调整至2048或更高),控制每个工作进程的最大并发连接数。use epoll;(Linux系统下),提高事件处理效率。8. 优化TCP与内核参数
编辑/etc/sysctl.conf文件,添加以下参数以优化TCP性能:
net.core.somaxconn = 65535 # 监听队列最大长度 net.ipv4.tcp_max_syn_backlog = 65535 # SYN队列最大长度 net.ipv4.ip_local_port_range = 1024 65535 # 本地端口范围 net.ipv4.tcp_tw_reuse = 1 # 复用TIME_WAIT连接 net.ipv4.tcp_fin_timeout = 30 # TIME_WAIT超时时间(秒) 应用更改:sudo sysctl -p。
9. 启用Gzip压缩
通过Gzip压缩减少传输数据量,提高页面加载速度。在Nginx配置文件的http或server块中添加:
gzip on; gzip_vary on; gzip_proxied any; gzip_comp_level 6; # 压缩级别(1-9,6为平衡值) gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; gzip_min_length 256; # 最小压缩文件大小(字节) 避免对图片、视频等二进制文件压缩(已压缩的文件再次压缩效果差)。
10. 配置静态文件缓存
通过设置HTTP响应头,让浏览器缓存静态文件(如图片、CSS、JS),减少重复请求。在server块中添加:
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2|woff|ttf)$ { expires 30d; # 缓存时间(可根据需求调整) add_header Cache-Control "public, no-transform"; } no-transform指令防止代理服务器修改内容(如压缩)。
11. 启用sendfile与TCP优化
sendfile on;指令,直接将文件从磁盘读取并发送到网络,避免数据在用户空间与内核空间之间拷贝,提高文件传输效率。tcp_nopush on;与sendfile配合使用,仅在发送完整数据包时才发送,提高网络利用率。12. 调整文件描述符限制
Nginx处理大量并发连接时,需增加文件描述符限制。编辑/etc/security/limits.conf文件,添加:
* soft nofile 65535 * hard nofile 65535 编辑/etc/pam.d/common-session与/etc/pam.d/common-session-noninteractive文件,添加:
session required pam_limits.so 重启系统或重新登录使更改生效。