HTTP 负载均衡:如何实现多台服务器的高效分发
为了让流量均匀分配到两台或多台 HTTP 服务器上,我们可以通过 NGINX 的 upstream 代码块实现负载均衡。
方法 在 NGINX 的 HTTP 模块内使用 upstream 代码块对 HTTP 服务器实施负载均衡:
upstream backend { server 10.10.12.45:80 weight=1; server app.example.com:80 weight=2; server spare.example.com:80 backup; } server { location / { proxy_pass http://backend; } }
该配置对端口 80 的两台 HTTP 服务器实施负载均衡,然后再将另一台服务器定义为 backup,以便在两台主服务器不可用时发挥作用。可选的 weight 参数指示 NGINX 向 第二台服务器传输两倍的请求。未使用时,它的默认值为 1。
HTTP 的 upstream 模块控制着 HTTP 请求负载均衡。该模块定义了一个目标池 ------ 它可以是 Unix 套接字、IP 地址和服务器主机名的任意组合,也可以是它们的混合使用 配置。
upstream 模块还定义了如何将任一个请求分发给任何上游(upstream)服务器。
每个上游目标都通过 server 指令在上游池中进行定义。除了上游服务器地址以外, server 指令还接收可选参数。
可选参数能够增强对请求路由的控制。这包括均衡算法 中服务器的 weight 参数(无论服务器处于待机模式、可用还是不可用),以及确定服 务器是否不可用的参数。
NGINX Plus 还提供了许多其他好用的参数,例如对服务器的 连接限制、高级 DNS 解析控制以及在服务器启动后缓慢增加与服务器的连接等等。
现在有一款很火的WAF,也是以反向代理方式接入,雷池社区版,保护你的网站,操作简单,可以试试