反向代理
1.反向代理使用权重轮询
配置反向代理一般在Nginx配置文件中进行,Nginx配置文件一般在/etc/nginx/nginx.conf
,修改完配置文件后,重启服务或重载配置文件
-bash-4.2# nginx -s stop
-bash-4.2# nginx
先使用
stop
信号停止Nginx服务然后使用
nginx
命令启动Nginx服务
-bash-4.2# nginx -s reload
可以直接使用
reload
信号对配置文件进行重载基础反向代理配置如下
upstream test {
server test1.com;
server test2.com;
}
location / {
proxy_pass http://test;
}
upstream
是一个用于定义一组后端服务器的模块,可以写IP地址或域名,存放与http块中proxy_pass
可以把请求转发到upstream
定义的后端服务器上,存在与server块中
在upstream
上如果没有特别定义,那么使用的是权重轮询,默认权重都是1
upstream test {
server test1.com weight=5;
server test2.com;
}
这样test1.com的权重为5,test1.com的权重为1;轮询情况:如果有6个请求发送到Nginx
,会有5个请求转发到test1.com,然后会有1个请求转发到test2.com
2.反向代理中使用哈希
在upstream
块中可以不使用权重轮询,可以选择使用IP哈希算法。
IP哈希算法使用客户端的 IP 地址进行哈希计算,确保相同 IP 的请求被发送到同一台后端服务器,有助于保持会话一致性。
upstream test {
ip_hash;
server test1.com;
server test2.com;
}
location / {
proxy_pass http://test;
}
请注意,使用哈希算法后,如果节点增加,可以会导致同一个IP的请求转发到另一个后端服务上
3.设置备用后端服务
在上面两种方法中,在upstream
中定义的全部后端服务都会接收请求,如果不想使用后端服务轮询,可以设置备用后端服务,这样会在一个后端服务不可用之后,才会把请求转发到备用后端服务。
upstream test {
server test1.com max_fails=3 fail_timeout=30s;
server test2.com backup;
}
location / {
proxy_pass http://test;
}
在备用后端服务上加上
backup
参数,表示这个是个备用后端服务,在主后端服务不可用之前,请求不会转发到备用后端服务max_fails=3
参数表示最大重试次数为3,重试3次后把test1.com
标记为不可用,将请求转发到备用后端服务fail_timeout=30s
表示的是重试时间,一次请求失败后,会在30s后才再次接受请求
注意:在主后端服务不可用之后,会由备用后端服务接受请求,但如果主后端服务恢复之后,请求任然会转发到主后端服务。
最后更新于