Nginx 负载均衡和缓存配置最佳实践

 更新时间:2025年08月21日 10:07:27   作者:趁你还年轻  
本文介绍Nginx负载均衡与缓存配置,涵盖upstream模块基础用法、轮询/加权轮询/IP哈希/最少连接等策略,以及代理缓存、静态资源缓存和SSL缓存的设置,本文通过实例代码给大家讲解的非常详细,感兴趣的朋友一起看看吧

Nginx 负载均衡配置

1. 基础配置

在 Nginx 中,负载均衡主要通过 upstream 模块实现,结合反向代理将请求分发到多个后端服务器。以下是一个基础配置示例:

http {
    upstream backend_servers {
        server 192.168.1.10:8080;
        server 192.168.1.11:8080;
        server 192.168.1.12:8080;
    }
    server {
        listen 80;
        server_name example.com;
        location / {
            proxy_pass http://backend_servers;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}
  • upstream backend_servers:定义了一个后端服务器组,名称为 backend_servers
  • server:指定后端服务器的 IP 地址和端口。
  • proxy_pass:将请求转发到 upstream 定义的服务器组。
  • proxy_set_header:设置 HTTP 头,以便后端服务器可以获取请求的相关信息。

2. 负载均衡策略

Nginx 支持多种负载均衡策略:

轮询(默认):依次将请求分发到每个后端服务器。

upstream backend {
    server 192.168.1.101;
    server 192.168.1.102;
    server 192.168.1.103;
}

加权轮询:为每个服务器分配不同的权重,权重越高,分配到的请求越多。

upstream backend {
    server 192.168.1.101 weight=3;
    server 192.168.1.102 weight=2;
    server 192.168.1.103 weight=1;
}

IP 哈希:根据客户端的 IP 地址将请求分发到固定的后端服务器,适用于需要会话保持的场景。

upstream backend {
    ip_hash;
    server 192.168.1.101;
    server 192.168.1.102;
    server 192.168.1.103;
}

最少连接:将请求分发到当前连接数最少的服务器,适用于处理时间较长的请求。

upstream backend {
    least_conn;
    server 192.168.1.101;
    server 192.168.1.102;
    server 192.168.1.103;
}

3. 高级配置

健康检查:可以配置健康检查,自动移除不健康的服务器。

upstream backend {
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
    server 192.168.1.12:8080;
    health_check interval=10s fails=3 passes=2 uri=/health port=8080;
}

备用服务器:可以指定备用服务器,当主服务器不可用时自动切换。

upstream backend {
    server 192.168.1.10:8080;
    server 192.168.1.11:8080 backup;
}

Nginx 缓存配置

1. 代理缓存

代理缓存是 Nginx 缓存后端服务器响应的一种方式,适用于动态内容的缓存。

http {
    proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g;
    server {
        location /dynamic/ {
            proxy_pass http://backend;
            proxy_cache my_cache;
            proxy_cache_valid 200 302 10m;
            proxy_cache_valid 404 1m;
            proxy_cache_use_stale error timeout http_500 http_502 http_503;
        }
    }
}
  • proxy_cache_path:定义缓存的存储路径、层级结构、缓存区域名称、最大缓存大小等。
  • proxy_cache:指定使用哪个缓存区域。
  • proxy_cache_valid:设置不同响应状态码的缓存有效期。
  • proxy_cache_use_stale:在某些情况下使用过期的缓存,如后端服务器错误或超时。

2. 静态资源缓存

对于静态资源,可以直接设置浏览器缓存时间,减轻服务器压力。

location ~* \.(jpg|png|gif)$ {
    root /var/www/images;
    expires 30d;
}
  • expires:设置浏览器缓存时间,单位可以是秒、分钟、小时、天等。

3. 高级缓存配置

Vary 响应头:根据请求的某些头部字段来缓存不同版本的资源

proxy_cache_valid 200 302 10m;
proxy_cache Vary;

连接和响应缓冲:优化连接和响应的缓冲设置

proxy_buffers 8 4k;
proxy_buffer_size 8k;
proxy_busy_buffers_size 16k;

SSL 缓存:如果使用 SSL,配置 SSL 会话缓存。

ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;

缓存最佳实践

  • 合理设置缓存时间:根据资源更新频率设置合适的缓存时间。
  • 监控缓存命中率:定期检查缓存命中率,评估缓存策略的有效性。
  • 使用 CDN:利用 CDN 缓存静态资源,减轻服务器压力。
  • 缓存预热:部署新版本时,预先加载缓存,避免缓存穿透。
  • 安全性:确保缓存内容的安全性,避免敏感信息泄露。

通过合理配置 Nginx 的负载均衡和缓存功能,可以显著提升 Web 应用的性能和可靠性。

到此这篇关于Nginx 负载均衡和缓存配置的文章就介绍到这了,更多相关nginx 负载均衡与缓存内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 通过nginx实现方向代理过程图解

    通过nginx实现方向代理过程图解

    这篇文章主要介绍了通过nginx实现方向代理过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Nginx access.log日志详解及统计分析小结

    Nginx access.log日志详解及统计分析小结

    nginx有一个非常灵活的日志记录模式,本文主要介绍了Nginx access.log日志详解及统计分析小结,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-03-03
  • 记一次nginx中proxy_pass的使用问题

    记一次nginx中proxy_pass的使用问题

    这篇文章主要介绍了记一次nginx中proxy_pass的使用问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Nginx配置管理与Flask登录日志查询优化实战指南

    Nginx配置管理与Flask登录日志查询优化实战指南

    在 Web 开发和服务器运维中,Nginx 的配置管理和后端 API 的数据查询优化是常见的需求,本文将通过两个典型场景进行详细讲解文章包含详细的操作步骤、代码示例和优化建议,需要的朋友可以参考下
    2025-05-05
  • 高性能软件负载OpenResty介绍和安装使用详解

    高性能软件负载OpenResty介绍和安装使用详解

    OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项,这篇文章主要介绍了高性能软件负载OpenResty介绍和安装,需要的朋友可以参考下
    2023-12-12
  • 神器!最佳 Nginx 日志分析工具 GoAccess

    神器!最佳 Nginx 日志分析工具 GoAccess

    非常小又精悍的 Nginx 日志分析工具 GoAccess,今天在 CentOS VPS 上安装测试了一番,就2个字,神器!
    2014-02-02
  • NGINX服务器配置404错误页面转向的方法

    NGINX服务器配置404错误页面转向的方法

    这篇文章主要为大家详细介绍了NGINX服务器配置404错误页面转向的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • 利用Nginx反向代理与负载均衡搭建多人测试环境详解

    利用Nginx反向代理与负载均衡搭建多人测试环境详解

    这篇文章主要介绍了利用Nginx反向代理与负载均衡搭建多人测试环境的相关资料,文中介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-04-04
  • nginx+goreplay实现业务流量压测的示例代码

    nginx+goreplay实现业务流量压测的示例代码

    通过Nginx和GoReplay的组合,可以实现生产环境流量的实时拷贝和回放,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-07-07
  • Nginx路径匹配的配置指南

    Nginx路径匹配的配置指南

    在大型互联网架构中,Nginx作为反向代理和负载均衡的核心组件,其路径匹配精度直接影响系统路由的准确性,所以本文给大家详细介绍了Nginx路径匹配的配置指南,需要的朋友可以参考下
    2025-07-07

最新评论