插件窝 干货文章 Nginx静态文件服务如何配置及优化

Nginx静态文件服务如何配置及优化

Nginx 文件 application 优化 432    来源:    2025-04-26

Nginx静态文件服务配置与优化指南

基本静态文件服务配置

server {
    listen 80;
    server_name example.com;

    root /var/www/html;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

优化配置项

1. 启用高效文件传输

sendfile on;
tcp_nopush on;
tcp_nodelay on;

2. 设置连接超时

keepalive_timeout 65;
keepalive_requests 1000;
client_body_timeout 12;
client_header_timeout 12;
send_timeout 10;

3. 静态文件缓存控制

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

4. 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_proxied any;
gzip_vary on;
gzip_comp_level 6;
gzip_buffers 16 8k;

5. 文件描述符优化

worker_rlimit_nofile 100000;

6. 工作进程优化

worker_processes auto;
worker_connections 4096;
multi_accept on;
use epoll;

7. 静态文件直接IO(大文件场景)

location /videos/ {
    aio on;
    directio 4m;
    output_buffers 1 2m;
}

8. 安全优化

server_tokens off;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";

高级优化技巧

  1. 使用内存盘缓存热点文件:
proxy_cache_path /dev/shm/nginx_cache levels=1:2 keys_zone=STATIC:10m inactive=24h max_size=1g use_temp_path=off;
  1. 预压缩静态文件:
location ~* \.js$ {
    gzip_static on;
    try_files $uri.gz $uri =404;
}
  1. HTTP/2支持:
listen 443 ssl http2;
  1. Brotli压缩 (需要额外模块):
brotli on;
brotli_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
  1. 零拷贝优化 (Linux 4.5+):
location /large-files/ {
    sendfile on;
    aio threads;
    directio 8m;
}

性能监控与调优

  1. 启用状态监控:
location /nginx_status {
    stub_status on;
    access_log off;
    allow 127.0.0.1;
    deny all;
}
  1. 使用ngx_http_slice_module模块分片传输大文件

  2. 定期检查并优化配置文件:

nginx -t

注意事项

  1. 根据实际硬件调整worker_processes和worker_connections
  2. 生产环境建议启用HTTPS
  3. 大流量网站考虑使用CDN分担静态文件服务
  4. 定期清理日志文件防止磁盘空间耗尽

以上配置可根据实际业务需求进行调整组合,建议在修改配置后进行压力测试以验证优化效果。