nginx 配置反向代理和负载均衡
环境准备
主机 | IP |
control01 | 192.168.29.128 |
nginx01 | 192.168.29.101 |
nginx02 | 192.168.29.102 |
nginx03 | 192.168.29.103 |
一、配置反向代理
control01 nginx配置
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { proxy_pass http://192.168.29.101; # proxy_pass关键字 #root html; #index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
执行systemctl reload nginx使配置生效
访问control01的nginx
这里提前修改nginx01 主机 index页面,直接显示反向代理效果。
二、配置负载均衡
control01 配置
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream example{ server 192.168.29.101:80; server 192.168.29.102:80; } server { listen 80; server_name localhost; location / { proxy_pass http://example; #root html; #index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
执行systemctl reload nginx使配置生效
访问control01的nginx查看效果
刷新页面显示
这样就实现了一个简单的负载均衡配置
注意:这里的负载均衡其实是对一组服务器进行了反向代理,默认的规则是轮询;轮询的缺点就是无法保持会话
upstream 跟 server块是同一级别的,都在http块之内;
upstream 的名字跟proxy_pass后面的名字对应;
三、负载均衡策略
control01 配置
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream example{ server 192.168.29.101 weight 5 down; server 192.168.29.102 weight 3;
server 192.168.29.103 weight 1 backup; } server { listen 80; server_name localhost; location / { proxy_pass http://example; #root html; #index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
weight:权重,给server组配置不同的权重,权重越大的调度到的概率也就越高
down: server下线,配置了之后就不会调度到该server上了
backup:备份server,只有当其他server都不可用时才可调度,有可用server时,不可接受调度。
以上调度策略可以组合使用,实际生产环境很少使用。
其他不常用的策略:
ip_hash:根据客户端的IP地址转发请求到后端的同一台服务器,可以会话保持,但是会造成流量倾斜
url_hash:根据用户访问的url定向转发请求,可以保持会话,适用于访问固定资源在某些服务器上的场景
least_conn:最少连接访问,假如存在两台机器,一台访问量1000,另一台就20的访问量,那么这个配置就会帮我们把访问量多的那台机器上的流量分配一些到空闲些的机器上
fair:根据后端服务器的响应时间发送请求,哪个服务器响应速度快就发送给哪个,缺点是也会造成严重的流量倾斜
以上四个策略需要添加额外的模块,默认nginx没安装。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了