问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Nginx负载均衡配置详解:从入门到实战

创作时间:
作者:
@小白创作中心

Nginx负载均衡配置详解:从入门到实战

引用
CSDN
1.
https://blog.csdn.net/zpf1813763637/article/details/109455451

负载均衡是现代Web应用中不可或缺的技术,它能够将大量的请求合理地分配到多台服务器上,从而提高系统的可用性和响应速度。本文将详细介绍如何使用Nginx实现负载均衡,从基础的反向代理配置到多种负载均衡策略的实战应用,手把手教你掌握这项关键技能。

一、Nginx反向代理

实现负载均衡之前,我们首先要实现反向代理。反向代理的作用是:当客户端请求到达Nginx时,Nginx会根据配置将请求转发到相应的后端服务器,类似于DNS解析的过程。

我们修改Nginx的配置文件conf/nginx.conf,具体修改如下图所示的两个地方:

实现效果:使用Nginx反向代理,访问www.localhost:80.com会直接跳转到127.0.0.1:8080

请求的是Nginx的地址,代理到Tomcat的页面。

二、Nginx负载均衡

实现效果

浏览器地址栏输入地址http://127.0.0.1/myweb/index.jsp,负载均衡效果,将请求平均分配到8080和9999两台服务器上。

准备工作

(1)准备两台Tomcat服务器,一台监听8080端口,一台监听9999端口
(2)在两台Tomcat的webapps目录中创建一个小项目,例如:myweb/index.jsp

实现负载均衡的几种方式

声明:实现负载均衡的方式有很多,配置完一种后面的大差不差,我们主要讲解第一种

1. 轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

# 反向代理配置
upstream server_list{
   # 这个是Tomcat的访问路径
   server localhost:8080;
   server localhost:9999;
}
server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            proxy_pass http://server_list;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

使用两台服务器,拷贝一个Tomcat
修改conf文件下面的server.xml配置文件,分别修改三个端口号

<Server port="18005" shutdown="SHUTDOWN">
<Connector port="9999" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
<Connector port="18009" protocol="AJP/1.3" redirectPort="8443" />

修改两台Tomcat服务器下面webapps/ROOT/index.jsp,分别加上标记,用以区分

<h1>main</h1>
<h1>back</h1>

在这里插入图片描述
1

2. weight 权重

weight代表权重,默认为1,权重越高被分配的客户端越多
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。例如

# 反向代理配置
upstream server_list{
# 这个是Tomcat的访问路径
server localhost:8080 weight=5;
server localhost:9999 weight=1;
}

3. ip_hash

每个请求按访问IP的hash值分配,这样每个访问客户端会固定访问一个后端服务器,可以解决会话Session丢失的问题

upstream backserver { 
        ip_hash; 
        server 127.0.0.1:8080; 
        server 127.0.0.1:9090; 
}

不管刷新多少遍,始终访问的是同一台Tomcat服务器

4. 最少连接

Web请求会被转发到连接数最少的服务器上

upstream backserver { 
    least_conn;
    server 127.0.0.1:8080; 
    server 127.0.0.1:9090; 
}	
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号