Nginx 反向代理实现负载均衡 Nginx技术
- 创建时间:2023-02-27 / 最新修改时间:2023-02-27 09:18:30
- 1007
- 0
Nginx是什么,有什么过人的特点
Nginx 是一款高性能的 http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。官方测试 nginx 能够支支撑 5 万并发链接,并且 cpu、内存等资源消耗却非常低,运行非常稳定。
Nginx 应用场景
- http 服务器。Nginx 是一个 http 服务可以独立提供 http 服务。可以做网⻚静态服务器。
- 虚拟主机。可以实现在一台服务器虚拟出多个网站,并可以把每个不同的虚拟主机绑定不同的域名。
- 反向代理并负载均衡。
反向代理和负载均衡
这里主要记录一下Ngxin反向代理和负载均衡. 原理图 这里以java web项目为例,一共有3个tomcat服务器和一台了Nginx的服务器,每个tomcat服务器都部署了相同的java web项目,。
配置
以linux为例,安装好Nginx后进入
cd /etc/nginx/conf.d
在此目录下建立的每一个配置文件,Nginx都视为一台虚拟主机,我通常以 域名 倒写加端口格式配置文件。
sudo vim limpire-cn-80.conf
配置文件内容如下:
upstream tomcat-kkb{
server 192.168.1.2:8080; #Tomcat_A
server 192.168.1.3:8080; #Tomcat_B
server 192.168.1.4:8080; #Tomcat_C
}
server {
listen 80; # 监听的端口
server_name www.aaa.com; # 绑定的域名或ip
location / { # 访问路径配置
# root index;# 根目录
proxy_pass http://tomcat-kkb; # 代理目标:这里是指upstream 的名字。
index index.html index.htm; # 默认首⻚
}
}
保存后上面的配置文件后,重启一下Nginx。
sudo nginx -s reload
重启后即可浏览我们的web。
均衡负载
通过上面的配置Nginx后,通过一些方法可以看出,每次访问 www.aaa.com 都会按一定算法反代到 192.168.1.2/3/4 中的其中一台服务器(默认是轮询算法),那么我们是不是可以自定义他们的权重呢?
自定义权重时我们只需要添加一个关键字:
weight
例如:
upstream tomcat-kkb{
server 192.168.1.2:8080; #Tomcat_A
server 192.168.1.3:8080 weight=2; #Tomcat_B
server 192.168.1.4:8080; #Tomcat_C
}
server {
listen 80; # 监听的端口
server_name www.aaa.com; # 绑定的域名或ip
location / { # 访问路径配置
# root index;# 根目录
proxy_pass http://tomcat-kkb; # 代理目标:这里是指upstream 的名字。
index index.html index.htm; # 默认首⻚
}
}
weight:指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 如按上面的配置进行反向代理,则192.168.1.3被访问的概率时其他的2倍。
Nginx 的 upstream目前支持 4 种方式的分配 :
1)、轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2)、weight 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
2)、ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
3)、fair(第三方) 按后端服务器的响应时间来分配请求,响应时间短的优先分配。
4)、url_hash(第三方)