1. 设置超时时间:
location / { root html; index index.html index.htm; proxy_pass ; proxy_connect_timeout 5; # 连接超时时间 proxy_send_timeout 5; # 发送数据给后端服务器的超时时间 proxy_read_timeout 5; # 后端服务器的相应时间 #proxy_next_upstream off; # 是否要关闭重试机制 }2. 设置尝试重试的次数:
upstream myserver{ server 127.0.0.1:8088 max_fails=1 fail_timeout=100s; server 127.0.0.1:8089 max_fails=1 fail_timeout=100s; }其中 max_fails 表示最多失败次数,fail_timeout 表示在一个时间段内,服务器不会再次尝试访问;上面的配置表示在 100s 内,只要超时失败 1 次,就不再访问该服务器。
完整配置文件请参考:设置超时重试时间5s-失败1次100秒之内不再访问-nginx.conf
除此之外,我们还可以安装第三方模块来实现“后端服务器节点健康状态检查”:
nginx_upstream_check_module
ngx_http_healthcheck_module
5.3 Nginx 的高可用 以为使用 Nginx ,部署了多台应用服务器,可以保证应用服务器的高可用(挂掉一台,还有其他服务器可以用); 但是如何保证负载均衡的高可用性?也就是万一 Nginx 挂了怎么办?Nginx 同样也需要部署多台,架构大概是这个样子的:
现在应用比较广泛的是利用 keepalived 实现 Nignx 的高可用:
除了以上的常见功能,强大的 Nginx 还可以:
限制 IP 访问频率和带宽占用;
缓存静态资源;
文件压缩;
TCP 负载;
防盗链;
等等等等...
总结我们现在的架构已经变成了: