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