架构——nginx做反向代理篇

前言:

环境还是前面的环境,会不断地更新扩大,今天主写nginx部分,有兴趣可以点点关注,一起学习,有赞必回。

实验环境:

服务器 用途作用
nginx,php(192.168.10.5) 做web2节点服务器 ,做web2的php服务器
nginx,mysql(192.168.10.6) 做web1节点服务器,做web2的数据库
nginx(192.168.10.2) 做反向代理服务器
mysql(192.168.10.4) 做web1的数据库
php(192.168.10.3) 做web1的php服务器
测试机(192.168.10.1) 测试访问

天天说代理,负载均衡,你知道它俩区别是什么吗?

代理负责把连接请求直接转发到后台某个web节点
负载均衡负责把请求使用某种调度算法分散发布给后台所有web节点

(1)启动lb1,安装nginx,这里就不写了,源码的还是rpm的前面都有
(2)创建代理配置文件,添加优化项

vim /etc/nginx/conf.d/lb1.conf
添加:
server {
        listen 80;
        server_name blog.benet.com;

        location / {
                proxy_pass http://192.168.10.6;								
                proxy_set_header Host $http_host;								#转发请求时,包含头部“HOST”信息
                proxy_set_header X-Real-IP $remote_addr;						#和下行一起,共同实现追踪客户端原ip
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
				
				proxy_connect_timeout 30;										#代理和后端服务器连接超时时间
				proxy_send_timeout 60;											#后端服务器传回代理的超时时间
				proxy_read_timeout 60;											#代理等待后端服务器的响应时间
				
				proxy_buffering on;												#启用缓存,后端返回内容先缓存,再给客户端,收到多少转多少
				proxy_buffer_size 32k;											#代理缓存用户头信息的缓存区大小
				proxy_buffers 4 128k;											#缓存区的设置
        }
}
server {
        listen 80;
        server_name zh.benet.com;

        location / {
                proxy_pass http://192.168.10.6;
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}
保存退出
systemctl restart nginx

或者这样写:
编译nginx_params文件,vim /etc/nginx/nginx_params

vim /etc/nginx/nginx_params
添加:
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;

proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
保存退出

网站文件配置调用,vim /etc/nginx/conf.d/lb1.conf

server {
        listen 80;
        server_name blog.benet.com;

        location / {
                proxy_pass http://192.168.10.6;
                include nginx_params;
        }
}
server {
        listen 80;
        server_name zh.benet.com;

        location / {
                proxy_pass http://192.168.10.6;
                include nginx_params;
        }
}
保存退出
重启nginx:systemctl restart nginx

(3)客户机测试修改/etc/hosts文件,访问blog.benet.com
在这里插入图片描述
查看日志

[root@localhost ~]# tail -f /var/log/nginx/access.log
192.168.10.2 - - [04/Apr/2020:02:35:38 -0700] "GET /wp-content/themes/twentyseventeen/assets/js/skip-link-focus-fix.js?ver=1.0 HTTP/1.0" 304 0 "http://blog.benet.com/" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0" "192.168.10.1"
192.168.10.2 - - [04/Apr/2020:02:35:38 -0700] "GET /wp-content/themes/twentyseventeen/assets/js/jquery.scrollTo.js?ver=2.1.2 HTTP/1.0" 304 0 "http://blog.benet.com/" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0" "192.168.10.1"
192.168.10.2 - - [04/Apr/2020:02:35:38 -0700] "GET /wp-includes/js/wp-emoji-release.min.js?ver=4.9.4 HTTP/1.0" 304 0 "http://blog.benet.com/" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0" "192.168.10.1"

到此,反向代理已经做好。

扩展:

负载均衡(Load Balance),简写LB
面对高并发web请求,使用各种调度算法(rr,wrr,lc,wlc,ip_hash),分散转发到后台web群集节点,提高数据吞吐量,高容灾等。

常见的LB:
		软件:lvs  nginx   haproxy   
		硬件:F5
		云LB:阿里云SLB    腾讯云CLB   青云QLB   ucloud ULB 等

nginx做负载均衡

(1)修改lb1的配置文件,添加负载均衡功能

vim /etc/nginx/conf.d/lb1.conf
修改为:
upstream web_cluster {
        server 192.168.10.5:80 weight=1;
        server 192.168.10.6:80 weight=1;
}

server {
        listen 80;
        server_name blog.benet.com;

        location / {
                proxy_pass http://web_cluster;
                include nginx_params;
        }
}
server {
        listen 80;
        server_name zh.benet.com;

        location / {
                proxy_pass http://web_cluster;
                include nginx_params;
        }
}
保存退出
重启nginx:systemctl restart nginx 

(2)客户端访问验证,浏览器如果判断不出来,就看web节点上的日志。

在这里插入图片描述
刷新再看,nou,下面另一个web界面
在这里插入图片描述

(3)nginx负载均衡后端状态

参数 状态
down 当前节点服务器不参与负载均衡
backup 备份服务器
max_fails 允许请求失败的次数
fails_timeout 经过max_fails失败后,服务的暂停时间
max_conns 同一ip最大连接数
注:down一般是在服务器宕机或维护时才使用。

具体使用方法如下:
vim /etc/nginx/conf.d/lb1.conf
修改为:
upstream web_cluster {
        server 192.168.10.5:80 max_fails=2 fails_timeout=10s max_conns=1;  
        server 192.168.10.6:80 down;			
}
发布了35 篇原创文章 · 获赞 3 · 访问量 6346

猜你喜欢

转载自blog.csdn.net/weixin_43815140/article/details/105307716