nginx 负载均衡配置


nginx 4层负载层配置

Nginx 不是一个传统的4层负载均衡器,但可以通过 stream 模块配置 TCP/UDP 负载均衡。以下是一个简单的示例配置,展示如何配置 Nginx 作为4层负载均衡器:

在这个配置中,Nginx 监听在 12345 端口上的连接,并将它们代理到名为 backend 的上游组,该上游组包含两个后端服务器。proxy_connect_timeout 指定了连接到后端服务器的超时时间。

确保你的 Nginx 版本支持 stream 模块,通常这需要 Nginx Plus 或编译时包含 --with-stream 选项。

请注意,Nginx 不是专门设计为4层负载均衡器的工具,它更适合于7层负载均衡。如果你需要更全面的4层负载均衡功能,可能需要考虑使用像 HAProxy 这样的专用工具。

 

stream {
    upstream backend {
        server backend1.example.com:12345;
        server backend2.example.com:12345;
    }
 
    server {
        listen 12345; # 监听的端口号
        proxy_pass backend; # 代理到上游组
    }
}

 

nginx 7层负载层配置

 

Nginx 支持在 7 层负载均衡,主要通过 ngx_http_upstream_module 模块实现。以下是一个简单的 Nginx 配置示例,展示了如何配置基于域名的 7 层负载均衡:

在这个配置中,我们定义了一个 upstream 块,名为 backend,它包含了两个后端服务器。在 server 块中,我们设置了监听端口为 80,并在 location / 中配置了代理传递到 backend 上游服务器组,同时设置了一些常用的代理头部,以确保应用可以获取到正确的原始请求信息。

这个配置实现了基于域名的负载均衡,因为每个请求的域名会被用来决定将请求代理到哪个后端服务器。如果你需要更复杂的负载均衡策略,如权重、故障转移等,可以通过在 upstream 中添加更多的参数来实现。

 

http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
    }
 
    server {
        listen 80;
 
        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

 

posted @ 2024-03-11 17:50  zhaoguanhao  阅读(18)  评论(0编辑  收藏  举报