前端:ngnix 作用

70 阅读2分钟

Nginx 能做的优化

Nginx 是一个高性能的反向代理服务器,广泛用于负载均衡、反向代理、缓存、静态资源处理等场景。在 Web 性能优化方面,Nginx 可以提供以下优化:


📌 1. 静态资源缓存

通过设置合适的缓存策略,可以减少资源的加载时间,提高网站性能。

(1) 设置缓存头

location ~* .(jpg|jpeg|png|gif|css|js|woff|woff2|svg)$ {
  expires 30d;  # 设定静态资源缓存为 30 天
  add_header Cache-Control "public, no-transform, max-age=2592000";
}

作用:为图片、CSS、JavaScript 等静态资源添加缓存头,减少后续请求。

(2) 使用 etagLast-Modified

location / {
  etag on;
  if_modified_since exact;
}

作用:启用 ETag 和 Last-Modified,可以让浏览器根据文件的最后修改时间判断是否重新加载。


📌 2. Gzip 压缩

开启 Gzip 压缩可以显著减少响应内容的大小,提升页面加载速度。

配置 Gzip 压缩

gzip on;
gzip_comp_level 6;
gzip_types text/plain application/xml application/javascript text/css application/json image/svg+xml;
gzip_vary on;

作用:启用 Gzip 压缩,压缩常见文本文件(如 HTML、CSS、JavaScript),减少传输数据的大小。


📌 3. HTTP/2 支持

HTTP/2 是 HTTP 协议的第二个版本,相比 HTTP/1.1,它减少了延迟,提高了性能。

启用 HTTP/2

server {
  listen 443 ssl http2;
  ssl_certificate /path/to/cert.pem;
  ssl_certificate_key /path/to/cert.key;
  # 其他配置
}

作用:开启 HTTP/2,提供多路复用、更高效的资源加载。


📌 4. 负载均衡

Nginx 可以作为反向代理服务器,进行负载均衡,分发请求到多台服务器,增强网站的可伸缩性。

基本负载均衡配置

http {
  upstream backend {
    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com;
  }

  server {
    location / {
      proxy_pass http://backend;
    }
  }
}

作用:通过 upstream 配置,Nginx 将流量分发给多台后端服务器,负载均衡提升应用的性能和可用性。


📌 5. 限制请求速率

Nginx 可以用来限制请求速率,以防止恶意用户进行 DDOS 攻击或滥用资源。

配置请求速率限制

http {
  limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;

  server {
    location / {
      limit_req zone=mylimit burst=20;
    }
  }
}

作用:限制每个 IP 的请求速率,防止暴力攻击和资源浪费。


📌 6. SSL/TLS 性能优化

启用 TLS 和优化 SSL 配置可以加速 HTTPS 请求的建立。

优化 SSL 配置

server {
  listen 443 ssl http2;
  ssl_certificate /path/to/cert.pem;
  ssl_certificate_key /path/to/cert.key;
  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:...';
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:10m;
  ssl_session_timeout 1d;
  ssl_dhparam /etc/nginx/dhparam.pem;
}

作用:优化 SSL 配置,启用更高效的加密协议,提高安全性和性能。


📌 7. 反向代理缓存

通过缓存后端服务器的响应,减少后端负担,提高性能。

配置反向代理缓存

location /api/ {
  proxy_cache api_cache;
  proxy_cache_valid 200 1h;
  proxy_cache_use_stale error timeout updating;
  proxy_pass http://backend;
}

作用:缓存 API 响应,减少后端请求,提升网站响应速度。


📌 8. 防止热链接(Hotlinking)

通过防止外部网站直接访问你的网站资源,可以减少带宽浪费。

配置防止热链接

location ~ .(jpg|jpeg|png|gif|css|js)$ {
  valid_referers none blocked example.com *.example.com;
  if ($invalid_referer) {
    return 403;
  }
}

作用:只允许指定的域名加载资源,防止外部网站直接链接图片、视频等静态资源。


📌 9. 连接池和 keepalive

通过启用 keepalive 连接池功能,可以复用连接,减少建立新连接的开销。

配置 keepalive

http {
  upstream backend {
    server backend1.example.com;
    server backend2.example.com;
    keepalive 64;  # 连接池大小
  }

  server {
    location / {
      proxy_pass http://backend;
      proxy_set_header Connection "";
    }
  }
}

作用:启用 keepalive 连接池,减少每个请求建立新连接的开销,提升请求性能。


📌 10. 配置更合适的时间限制

通过设置请求和响应的超时时间,避免请求挂起过久。

设置连接超时

server {
  client_max_body_size 50M;  # 最大请求体大小
  client_body_timeout 12s;    # 请求超时
  send_timeout 10s;          # 响应超时
}

作用:通过合理的超时设置,防止请求挂起或阻塞,提升性能和稳定性。


📌 总结

通过使用 Nginx 配置缓存、压缩、负载均衡、连接池、HTTP/2 等优化措施,可以大幅度提高 Web 应用的性能,提升响应速度和用户体验。不同的优化手段适用于不同的场景,灵活配置能有效提升系统整体表现。

💡 你有哪个特定的 Nginx 优化需求吗?