Nginx 进阶详解

Nginx 配置进阶

负载均衡实现

业务说明

需要搭建tomcat服务器集群(应用集群),共同抗击高并发.这时需要使用反向代理服务器.同时配置负载均衡.

集群搭建

说明:准备3台tomcat服务器.端口号分别为8001/8002/8003.

负载均衡策略

轮询策略

说明:根据配置文件的顺序,依次访问服务器.

配置服务集群(默认是轮询策略)

java 复制代码
#配置服务列表,服务的ip地址为自己服务器的真实ip
upstream gateways{ 
server 192.168.1.130:8001;
server 192.168.1.130:8002;
server 192.168.1.130:8003;
}
#配置后台管理服务器
server {
listen 80;
server_name localhost;
location  / {
#实现http请求的转发
proxy_pass http://gateways;
}
}
权重策略

说明:可以为某些服务器添加权重,让该服务器处理能力更强的,可以处理更多的请求。

配置应用服务列表,本次配置采用默认是轮循策略,再给一个权重值;(让能者多劳)

java 复制代码
upstream gateways{
server 192.168.227.131:10001 weight=3;
server 192.168.227.131:10002 weight=2;
server 192.168.227.131:10003 weight=1;
}

备注,一但修改了配置文件(nginx.conf),要重新加载配置文件.(/usr/local/nginx/sbin/nginx -s reload)

IPHASH策略

问题说明:如果采用集群的部署,假如要做敏感操作,要求用户必须登录.但是由于nginx实现了负载均衡的操作,导致用户的Session数据不同共享.从而导致用户频繁登录.用户体验较差.

问题: nginx实现了tomcat负载均衡. 导致用户每次访问都是不同的服务器,但是用户的登录信息是存储在一台应用服务器上的,其它服务器没有这个登录信息,所以在访问到其它服务器时还需要重新登录。

解决方案: 能否让用户每次访问同一台服务器?答案是可以的,我们可以采用IPHASH策略,对请求进行负载均衡。

这样,同一个IP执行hash操作的结果肯定是相同。

IPHASH调用原理 如图所示:

IPHASH的配置如下:

java 复制代码
#配置服务应用列表
upstream geteways {
ip_hash;
server 192.168.227.131:10001 weight=6;
server 192.168.227.131:10002 weight=3;
server 192.168.227.131:10003 weight=1;
}
  • IPHASH存在的问题
  1. IPHASH如果一旦服务器出现异常,导致业务请求失效.
  2. 可能会出现负载不均的现象.负载有高有低(可在测试中试用).
    一般不会使用IPHASH,有时只是在测试中使用一下。
    3.3 NGINX常用属性
    3.3.1 Down属性
    说明:如果服务器宕机,可以在配置文件中标识为down.这样以后不会再访问故障机.
java 复制代码
upstream geteways {
#ip_hash;
server 192.168.227.131:10001 down;
server 192.168.227.131:10002;
server 192.168.227.131:10003;
}
BACKUP设计

说明:备用机设置,正常情况下该服务器不会被访问.当主机全部宕机或者主机非常忙时,该服务器才会访问.

java 复制代码
upstream geteways {
#ip_hash;
server 192.168.227.131:10001 down;
server 192.168.227.131:10002:8082;
server 192.168.227.131:10003 backup;
}
宕机服务器高可用实现

说明:当服务器宕机时,如果访问的失败次数达到最大失败次数,则标识为down.自动完成.在一定的周期之内,如果服务器恢复正常,则还会尝试访问故障机.

java 复制代码
max_fails=1 最大的失败次数 
fail_timeout=60s; 设定周期为60秒
upstream geteways {
#ip_hash;
server 192.168.227.131:10001 max_fails=1 fail_timeout=60s;
server 192.168.227.131:10002 max_fails=1 fail_timeout=60s;
server 192.168.227.131:10003 max_fails=1 fail_timeout=60s;
}
相关推荐
無法複制2 分钟前
Windows10安装配置Docker Desktop教程
运维·docker·容器
AI智图坊5 分钟前
宠物用品电商视觉内容生产的技术难点与自动化方案分析
大数据·运维·人工智能·ai作画·自动化·aigc
xiaoxiangsiyan17 分钟前
网络智能化转型核心模块全解析
运维·服务器·网络·数据库·学习·架构·php
陕西企来客26 分钟前
2026年8月真实安装案例:门窗现场施工到完工记录
大数据·运维·真实安装案例
盟接之桥1 小时前
半导体供应链破局:EDI如何成为中国制造的数字通行证
大数据·运维·服务器·网络·数据库·人工智能·制造
其实防守也摸鱼1 小时前
ZLibrary 类项目合规避坑指南:从技术实现到法律风险的全景梳理
运维·服务器·数据库·安全·自动化·github·copilot
白猫不黑1 小时前
网络空间安全/信息安全专业学习规划(超级详细版)
运维·学习·安全·web安全·网络安全·信息安全
裕晟资质规划1 小时前
西安政务信息化项目涉密系统集成资质准入解析:甲级/乙级承接边界、等保差异与合规承接路径
大数据·运维·数据库·人工智能·安全·政务
lingran__2 小时前
Linux 基础常用指令万字详解(下)|一切皆文件:重定向、管道、日志 与 Shell 原理
linux·运维·服务器·shell·管道·重定向·打包压缩
祖力552 小时前
进程间通信(IPC机制):无名通道与有名通道
linux·运维·服务器·进程·通信·进程间通信·ipc