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 负载均衡与缓存内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论