nginx

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > nginx > nginx 负载均衡与缓存

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

作者:趁你还年轻

本文介绍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;
        }
    }
}

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;
        }
    }
}

2. 静态资源缓存

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

location ~* \.(jpg|png|gif)$ {
    root /var/www/images;
    expires 30d;
}

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;

缓存最佳实践

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

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

您可能感兴趣的文章:
阅读全文