Nginx负载均衡配置详解:从入门到实战
Nginx负载均衡配置详解:从入门到实战
负载均衡是现代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;
}