Nginx反向代理负载均衡

时间:2023-06-16 17:44:14

环境准备:

总共四台机器,两台装有Nginx的机器做负载均衡,两台机器装有Apache作为WEB服务器。

机器信息
hostname IP 说明
lb01 192.168.1.19 nginx主负载均衡器
lb02 192.168.1.16 nginx辅负载均衡器
web01 192.168.1.17 Apache做web服务器
web02 192.168.1.18 Apache做web服务器

配置nginx的配置文件,

这里的nginx的安装是用的yum安装CentOS用yum快速安装nginx

移除掉默认的nginx服务

cd /etc/nginx/conf.d/
mv default.conf default.conf.org

编辑host解析

echo "192.168.1.19 blog.zydev.org" >>/etc/hosts
实验一:实现一个简单的负载均衡

增加一个配置文件

vim /etc/nginx/conf.d/upstream01.conf

upstream blog_real_servers {
server 192.168.1.17 weight=;
server 192.168.1.18 weight=;
} server {
listen ;
server_name blog.zydev.org;
location / {
proxy_pass http://blog_real_servers;
}
}

重启nginx服务,并测试是否实现负载均衡

Nginx反向代理负载均衡

测试是成功的,按照1:1实现了转发。

实验2:根据URL中的目录地址实现代理转发(动静分离)

根据URL进行转发的情况,也称为7层的负载均衡配置,lvs是进行在第四层。

在WEB01中:

echo dynamic > /var/www/html/dynamic/index.html

在web02中:

echo static > /var/www/html/static/index.html

在LB01中:

vim /etc/nginx/conf.d/upstream01.conf

pstream dynamic_pools {
server 192.168.1.17: weight=;
}
upstream static_pools {
server 192.168.1.18: weight=;
} server {
listen ;
server_name blog.zydev.org;
location /static/ {
proxy_pass http://static_pools;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout ;
proxy_send_timeout ;
proxy_read_timeout ;
proxy_buffer_size 4k;
proxy_buffers 4k;
proxy_busy_buffers_size 8k;
proxy_temp_file_write_size 64k;
}
location /dynamic/ {
proxy_pass http://dynamic_pools;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout ;
proxy_send_timeout ;
proxy_read_timeout ;
proxy_buffer_size 4k;
proxy_buffers 4k;
proxy_busy_buffers_size 8k;
proxy_temp_file_write_size 64k;
}
}

测试访问:

Nginx反向代理负载均衡

由结果可以看出实现了URL的不同而访问不同的转发。