引言
Nginx通过反向代理可以很容易的实现负载均衡,主要的方法是通过配置多个不同的后端服务器来将Web请求分发到这些服务器上。本文以红帽企业Linux8.7操作系统为例进行简单的介绍。
下面是一个Nginx反向代理负载均衡的具体配置的示例:
http {
upstream myapp1 {
server 10.64.0.3; #配置10.64.0.3为后端服务器
server 10.64.0.4; #配置10.64.0.4为后端服务器
}
server {
listen 80;
server_name www.example.com;
location / {
proxy_pass http://myapp1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
在这个配置示例中,我们定义了一个名为myapp1的upstream,其中包括两个后端服务器:10.64.0.3和10.64.0.4。然后在server段中,我们监听80端口,当有请求访问www.example.com域名时,将请求通过proxy_pass指令代理到myapp1 upstream上,这样Nginx将根据请求分配到该upstream中的其中一台服务器上去进行处理。
这个配置示例也包含了一些典型的反向代理头部设置,例如proxy_set_header指令中的Host和X-Real-IP头部。这些头部将在将请求代理到后端服务器的过程中,帮助确保客户端和后端服务器之间的数据流正常处理。
下面是正常的负载均衡开发与部署流程:
1、安装Nginx软件
dnf install nginx -y
注意这里软件安装的一定要带有nginx-all-modules
2、使用命令设置Nginx软件开机自启
systemctl enable --now nginx
这里我们确认一下Nginx是否已经正常配置完成这里我们直接打开我们的IP地址:
如果能够正常打开这个页面则说明我们的Nginx已经配置完成
3、配置Nginx配置文件:
接下来我们修改配置文件来实现使用Nginx的负载均衡配置,在修改Nginx配置文件之前我们使用命令 systemctl disable --now nginx
来停止Nginx服务。这里我们编辑一下 /etc/nginx/nginx.conf
文件,使用命令: vim /etc/nginx/nginx.conf
来进入VIM工具,并且按下键盘上的i来进入编辑模式。如图所示:
这里我们首先注释掉在47行的location配置,修改过的两行如图所示:
按下键盘上的ESC退出编辑模式,然后按下 :wq 来推出编辑模式,并将文件写入磁盘,这样我们就使用vim工具完成了一次编辑。完成这部分修改之后可以先保存一下,接下来我们继续说如何修改配置文件,
这里我们转移到第23行的位置,按下i进入编辑模式后我们插入代码:
upstream load_balance {
server 10.64.3.1;
server 10.64.1.1;
}
注意这里的每个服务器后面都有一个分号,这里配置后面的server可以配置成你需要配置的后端服务器的IP地址,一般来说这些后端服务器应该访问同一个数据库以确保数据的一致性和统一性。
找到48行,在include下方插入我们的反向代理配置:
location / {
proxy_pass http://load_balance;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
配置完成后如图所示:
这里配置完成后我们基本配置完成。输入命令:nginx -t
检查配置文件是否有错误,来确保我们配置正确:
在出现了下面的提示之后说明我们基本配置完成。
[root@cloudyunblogs_SG ~]# nginx -t
nginx: the configuration file /www/server/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /www/server/nginx/conf/nginx.conf test is successful
输入命令启用Nginx服务:
systemctl enable --now nginx
systemctl start nginx
systemctl status nginx
到这里我们Nginx就基本配置完成了。
最后我们输入IP地址来访问一下我们的网页:
本教程所有实例使用Redhat Enterprise Linux 8.7完成配置,如果有问题您可以通过huyang@cloudyun.org.cn来联系到我。非常感谢您的阅读!