LNMP架构应用实战—Nginx反向代理负载均衡配置

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

转载声明:转载请注明出处,本技术博客是本人原创文章

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> LNMP架构应用实战—Nginx反向代理负载均衡配置

LNMP架构应用实战—Nginx反向代理负载均衡配置

**         前面介绍了nginx虚拟主机的配置,每个虚拟主机提供不同的服务,实际生产环境中,会有多个虚拟主机提供相同的WEB服务,也是通常我们所说的高可用,当其中一台服务器有宕机的情况其它的服务器仍然可以提供正常的WEB服务,因此,就会用到前端的负载均衡器,进行负载调度,负载均衡有硬件设备(F5)、软件等,今天就来介绍下nginx HTTP反向代理负载均衡的功能**

**1、配置环境介绍**

系统环境:

[root@centos6 conf]# **cat /etc/redhat-release **

CentOS release 6.5 (Final)

[root@centos6 conf]#** uname -r**

2.6.32-431.el6.x86_64

nginx版本:

[root@centos6 conf]#** /application/nginx/sbin/nginx -v**

nginx version: nginx/1.10.1

LNMP架构应用实战—Nginx反向代理负载均衡配置 LNMP架构应用实战—Nginx反向代理负载均衡配置

配置二台虚拟主机,用来做后续测试

2、整体逻辑图

LNMP架构应用实战—Nginx反向代理负载均衡配置

说明:当用户访问时,其实访问的是负载均衡器对外提供的地地址,然后由它来根据相应的规则进行转发给后端后服务器

3、配置过程

[root@centos6 conf]# vi nginx.conf

worker_processes  1;    

events {                          

    worker_connections  1024;    

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65; 

include /application/nginx/conf/extra/upstream01.conf;

  }

增加上述配置即可

接下来配置****upstream01.conf


[root@centos6 extra]# vi upstream01.conf

#####config to nginx 

upstream test_servers {     ** #定义主机池**

server 172.16.1.235:8081 weight=5;  #按权重的方式进行轮询

server 172.16.1.235:8080 weight=5; 

server 172.16.1.235:80 weight=15;

      }

server { 

listen 80; 

server_name www.mingonge.com;

location / { 

 proxy_pass http://test_servers;     ** #将监听到请求转发到这个虚拟主机池**

}  

 }

更多关于upstream模块的介绍,请参考官方文档

http://nginx.org/en/docs/http/ngx_http_upstream_module.html

4、重启服务并测试

重启nginx服务

[root@centos6 extra]# /application/nginx/sbin/nginx -t

nginx: the configuration file /application/nginx-1.10.1/conf/nginx.conf syntax is ok

nginx: configuration file /application/nginx-1.10.1/conf/nginx.conf test is successful

[root@centos6 extra]# /application/nginx/sbin/nginx -s reload

linux本地客户端测试

[root@centos6 extra]# curl http://172.16.1.235

welcont to mingongge’s blog stie

[root@centos6 extra]# curl http://172.16.1.235

welcont to mingongge’s bbs stie

[root@centos6 extra]# curl http://172.16.1.235

welcont to mingongge’s blog stie

用户客户端用域名测试

本地客户端需要将域名正确解析,www.mingongge.com------172.16.1.235

LNMP架构应用实战—Nginx反向代理负载均衡配置 LNMP架构应用实战—Nginx反向代理负载均衡配置

从上面的测试结果来看,的确两次访问分配的服务器是不同的,为了测试效果,所以将显示的内容配置成不同,实际生产环境中,所有的访问显示内容都是一样的,实现服务器宕机但不会影响用户的体验度

**5、模拟测试真实环境**

我们这里将两台虚拟机首页内容配置成相同显示内容来模拟真实生产环境

[root@centos6 ~]# echo “welcome to mingongge’s web site” /www/bbs/index.html

[root@centos6 ~]# echo “welcome to mingongge’s web site” /www/blog/index.html

[root@centos6 ~]#** cat /www/bbs/index.html **

welcome to mingongge’s web site

[root@centos6 ~]# **cat /www/blog/index.html **

welcome to mingongge’s web site

linux客户端测试

[root@centos6 ~]# curl http://172.16.1.235

welcome to mingongge’s web site

[root@centos6 ~]# curl http://172.16.1.235

welcome to mingongge’s web site

停止其中一台虚拟的WEB服务功能来模拟故障,由于是用的nginx本身的虚拟主机,这里我们就修改配置文件,将包含配置文件注释掉

#include  /application/nginx/conf/extra/vhosts/bbs.conf;

如果测试用三台服务器,可以配置不同的http服务,模拟服务器宕机(停止WEB服务),来测试负载均衡的效果更加贴近现实环境

[root@centos6 ~]# curl http://www.mingongge.com        

welcome to mingongge’s web site

[root@centos6 ~]# curl http://www.mingongge.com

welcome to mingongge’s web site

LNMP架构应用实战—Nginx反向代理负载均衡配置 **客户端仍然可以访问 ,表明负载均衡的功能是生效的,当其中的服务器出现宕机情况,也不会影响用户的最终访问**

LNMP架构应用实战—Nginx反向代理负载均衡配置
长按关注公众号——友侃有笑

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

转载声明:转载请注明出处,本技术博客是本人原创文章

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> LNMP架构应用实战—Nginx反向代理负载均衡配置


 上一篇
LNMP架构应用实战——Nginx配置虚拟主机 LNMP架构应用实战——Nginx配置虚拟主机
LNMP架构应用实战——Nginx配置虚拟主机 ****        前面介绍了nginx服务的安装与配置文件,今天介绍下它的另一种实用配置——“虚拟主机”,每个虚拟主机可以是一个独立的网站,可以具有独立的域名,同一台服务器上的不同的
2021-04-05
下一篇 
LNMP架构应用实战——PHP扩展及缓存插件安装 LNMP架构应用实战——PHP扩展及缓存插件安装
LNMP****架构应用实战——PHP扩展及缓存插件安装 **1、LNMP环境查看** linux系统版本 [root@localhost~]# cat /etc/redhat-release CentOS
2021-04-05