插件窝 干货文章 Nginx动静分离配置怎么实现

Nginx动静分离配置怎么实现

静态 server proxy 资源 554    来源:    2025-04-26

Nginx动静分离配置实现指南

动静分离是一种常见的Web优化技术,通过将动态内容和静态内容分开处理,可以显著提高网站性能。以下是Nginx实现动静分离的详细配置方法:

基本配置方案

1. 静态资源与动态请求分离

server {
    listen 80;
    server_name example.com;

    # 静态资源处理
    location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff|woff2|ttf|eot)$ {
        root /var/www/static;
        expires 30d;
        access_log off;
        add_header Cache-Control "public";
    }

    # 动态请求处理
    location / {
        proxy_pass http://backend_server;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

2. 使用独立域名分离

更彻底的分离方式是使用不同的域名:

# 静态资源服务器配置
server {
    listen 80;
    server_name static.example.com;

    root /var/www/static;

    location / {
        expires max;
        add_header Cache-Control "public";
        access_log off;
    }
}

# 动态内容服务器配置
server {
    listen 80;
    server_name www.example.com;

    location / {
        proxy_pass http://backend_server;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

高级配置选项

1. 静态资源压缩

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

2. 浏览器缓存控制

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    root /var/www/static;
    expires 1y;
    add_header Cache-Control "public, immutable";

    # 启用ETag
    etag on;
}

3. 动静分离负载均衡

upstream static_servers {
    server static1.example.com;
    server static2.example.com;
}

upstream app_servers {
    server app1.example.com;
    server app2.example.com;
}

server {
    location /static/ {
        proxy_pass http://static_servers;
    }

    location / {
        proxy_pass http://app_servers;
    }
}

最佳实践建议

  1. 文件类型分类:将不同类型的静态资源分开存放,如图片、CSS、JS等
  2. CDN集成:将静态资源推送到CDN,减轻服务器负担
  3. 版本控制:为静态资源添加版本号或哈希值,便于缓存管理
  4. 监控与调优:定期检查静态资源加载性能,调整缓存策略

验证配置

配置完成后,可以通过以下方式验证:

  1. 访问静态资源URL,检查响应头中的Cache-ControlExpires
  2. 检查Nginx访问日志,确认静态资源请求是否被正确路由
  3. 使用开发者工具查看网络请求,确认静态资源是否被缓存

通过以上配置,您可以有效实现Nginx的动静分离,显著提升网站性能。