插件窝 干货文章 Nginx安全性能优化:压缩响应与减少流量

Nginx安全性能优化:压缩响应与减少流量

压缩 Gzip application Nginx 547    来源:    2025-04-20

Nginx安全性能优化:压缩响应与减少流量

压缩响应配置

1. 启用Gzip压缩

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_min_length 1024;
gzip_comp_level 6;
gzip_vary on;
gzip_proxied any;

参数说明: - gzip on:启用Gzip压缩 - gzip_types:指定需要压缩的MIME类型 - gzip_min_length:只压缩大于指定大小的响应 - gzip_comp_level:压缩级别(1-9),6是较好的平衡点 - gzip_vary:添加"Vary: Accept-Encoding"响应头 - gzip_proxied:对代理请求也启用压缩

2. 启用Brotli压缩(需要额外模块)

brotli on;
brotli_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
brotli_comp_level 6;
brotli_min_length 1024;

减少流量的其他优化措施

1. 启用缓存

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 30d;
    add_header Cache-Control "public, no-transform";
}

2. 限制请求方法

limit_except GET POST {
    deny all;
}

3. 禁用不必要的HTTP方法

if ($request_method !~ ^(GET|HEAD|POST)$ ) {
    return 405;
}

4. 优化SSL/TLS配置

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
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';
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;

5. 启用HTTP/2

listen 443 ssl http2;

安全头设置

add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options SAMEORIGIN;
add_header X-XSS-Protection "1; mode=block";
add_header Referrer-Policy "no-referrer-when-downgrade";
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https:; img-src 'self' https: data:; style-src 'self' 'unsafe-inline' https:; font-src 'self' https: data:";

实施建议

  1. 测试压缩效果:使用工具如curl或浏览器开发者工具验证压缩是否生效

    curl -I -H "Accept-Encoding: gzip" http://yourdomain.com
    
  2. 监控性能:实施前后监控服务器负载和带宽使用情况

  3. 渐进式实施:先在测试环境验证配置,再逐步应用到生产环境

  4. 定期更新:保持Nginx和压缩模块的最新版本以获得最佳性能和安全性

这些优化措施可以显著减少传输数据量,提高页面加载速度,同时增强安全性。