Nginx 反向代理与负载均衡
Nginx 反向代理与负载均衡
一、基本概念
1、代理概念
代理是指一个代表或渠道,涉及两个角色:
- 被代理角色:实际的服务提供者(如某达斯厂家)
- 目标角色:服务的消费者(如用户)
2、正向代理 vs 反向代理
正向代理
- 特点:代理客户端,客户端明确知道要访问的目标服务器
- 应用场景:科学上网、企业内部网络访问控制
- 工作模式:客户端 → 正向代理 → 目标服务器
反向代理
- 特点:代理服务器端,客户端不知道实际处理请求的服务器
- 应用场景:服务器集群、负载均衡、高可用
- 工作模式:客户端 → 反向代理 → 后端服务器集群
二、Nginx反向代理配置
核心模块
- Http Proxy模块:实现反向代理功能
- 常用指令:
proxy_pass
:指定后端服务器地址proxy_cache
:缓存功能(需集成第三方模块)
三、Nginx 负载均衡配置
环境配置
主机 | Ip | 安装 | 系统 |
---|---|---|---|
Nginx | 192.168.100.10 | Nginx | Centos7 |
Rs1 | 192.168.100.20 | Httpd | Centos7 |
Rs2 | 192.168.100.30 | Httpd | Centos7 |
- 三台主机都关闭防火墙和 selinux,还需要配置好 yum 仓库
- nginx 主机部署 nginx 服务
- rs1、rs2 主机上,安装 httpd,然后添加一个测试网页
1、负载均衡之轮询
在 nginx 主机上,修改配置文件,设置负载均衡
vim /usr/local/nginx/conf/nginx.conf
upstream webserver{server 192.168.100.20;server 192.168.100.30;
}location / {proxy_pass http://webserver;
}
测试访问
进行刷新重复访问,负载均衡以轮询的方式将接收到的请求按照顺序逐一分配到不同的后端服务器
2、负载均衡之设置权重
在 nginx 主机上,修改配置文件,设置负载权重
vim /usr/local/nginx/conf/nginx.conf
upstream webserver{server 192.168.100.20 weight=2;server 192.168.100.30;
}location / {proxy_pass http://webserver;
}
测试访问
进行刷新重复访问,发现 rs1 访问两次后才轮询到 rs2
3、负载均衡之 ip_hash
在 nginx 主机上,修改配置文件,设置负载权重 ip_hash
vim /usr/local/nginx/conf/nginx.conf
upstream webserver{ip_hash;server 192.168.100.20 weight=2;server 192.168.100.30;
}location / {proxy_pass http://webserver;
}
测试访问
进行刷新重复访问,发现访问全部是 rs1
nginx 记录了这个 ip 和 hash 值,那么下次同一个 ip 过来还是会分配到这个 httpd
四、动静分离 nginx+tomcat
环境配置
-
添加一台 Tomcat:192.168.100.40
-
部署测试网页
配置 nginx,设置动静分离
vim /usr/local/nginx/conf/nginx.conf
upstream webserver{server 192.168.100.20;server 192.168.100.30;
}
upstream tomcat{server 192.168.100.40:8080;
}location / {proxy_pass http://webserver;
}
location /test {proxy_pass http://tomcat;
}