Nginx反向代理及负载均衡

1.  nginx反向代理

1.1. 什么是反向代理

            通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中由代理服务器向Internet上的web服务器发起请求,最终达到客户机上网的目的。

       而反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

如下图:

1.2. nginx+tomcat反向代理

i.  需求

         两个tomcat服务通过nginx反向代理,本例子使用三台虚拟机进行测试,

         nginx服务器:192.168.101.3

         tomcat1服务器:192.168.101.5

         tomcat2服务器:192.168.101.6 

如下图:

ii. 启动tomcat

         tomcat使用apache-tomcat-7.0.57版本,在192.168.101.5和192.168.101.6虚拟机上启动tomcat。

iii. nginx反向代理配置

         根据上边的需求在nginx.conf文件中配置反向代理,如下:

 

         #配置一个代理即tomcat1服务器

         upstream tomcat_server1 {

                     server 192.168.101.5:8080;

         }

         #配置一个代理即tomcat2服务器

         upstream tomcat_server2 {

                     server 192.168.101.6:8080;

         }

 

        #配置一个虚拟主机

       server {

                  listen 80;

                  server_name aaa.test.com;

                  location / {

                                     #域名aaa.test.com的请求全部转发到tomcat_server1即tomcat1服务上

                                    proxy_pass http://tomcat_server1;

                                     #欢迎页面,按照从左到右的顺序查找页面

                                     index index.jsp index.html index.htm;

                   }

         }

 

         server {

                  listen 80;

                  server_name bbb.test.com;

                   location / {

                                      #域名bbb.test.com的请求全部转发到tomcat_server2即tomcat2服务上

                                     proxy_pass http://tomcat_server2;

                                     index index.jsp index.html index.htm;

                  }

           }

iv. 测试

         分别修改两个tomcat下的webapps/ROOT/index.jsp的内容,使用tomcat1和tomcat2两个服务首页显示不同的内容,如下:

         tomcat1下的index.jsp修改后:

         tomcat2下的index.jsp修改后:

 

 

 

         分别访问aaa.test.com、bbb.test.com测试反向代理。

         请求访问aaa.test.com通过nginx代理访问tomcat1,请求访问bbb.test.com通过nginx代理访问tomcat2。

2.  负载均衡

2.1. 什么是负载均衡

         负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

         负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

2.2. nginx实现负载均衡

v. 需求

         nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至 tomcat服务器。

         nginx负载均衡服务器:192.168.101.3

         tomcat1服务器:192.168.101.5

         tomcat2服务器:192.168.101.6

vi.配置

         根据上边的需求在nginx.conf文件中配置负载均衡,如下:

 

        upstream tomcat_server_pool{

                        server 192.168.101.5:8080 weight=10;

                         server 192.168.101.6:8080 weight=10;

        }

 

        server {

                   listen 80;

                   server_name aaa.test.com;

                   location / {

                             proxy_pass http://tomcat_server_pool;

                             index index.jsp index.html index.htm;

                   }

         }

节点说明:

在http节点里添加:

 

#定义负载均衡设备的 Ip及设备状态

upstream myServer {  

 

    server 127.0.0.1:9090 down;

    server 127.0.0.1:8080 weight=2;

    server 127.0.0.1:6060;

    server 127.0.0.1:7070 backup;

}

 

在需要使用负载的Server节点下添加

 

proxy_pass http://myServer;

 

upstream 每个设备的状态:

 

down 表示单前的server暂时不参与负载

weight  默认为1.weight越大,负载的权重就越大。

max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误

fail_timeout:max_fails 次失败后,暂停的时间。

backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。


vii.测试

         请求aaa.test.com,通过nginx负载均衡,将请求转发到tomcat服务器。

      通过观察tomcat的访问日志或tomcat访问页面即可知道当前请求由哪个tomcat服务器受理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/443325.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SolrCloud详解及搭建

1. 什么是SolrCloud 1.1. 什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用SolrCloud。当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大&am…

Linux下的MySQL安装及卸载

1.1 查看mysql的安装路径: [rootbogon ~]# whereis mysql mysql: /usr/bin/mysql /usr/lib/mysql/usr/share/mysql /usr/share/man/man1/mysql.1.gz 1.2 查看mysql的安装包: [rootbogon ~]# rpm -qa|grep mysql mysql-community-client-5.6.26-2.…

mysql explain用法

explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。使用方法,在select语句前加上explain就可以了,如:explain select * from statuses_status where id11;创建测试表:CR…

Linux 性能检查命令总结

如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?

【算法系列之四】柱状图储水

题目: 给定一个数组,每个位置的值代表一个高度,那么整个数组可以看做是一个直方图, 如果把这个直方图当作容器的话,求这个容器能装多少水 例如:3,1,2,4 代表第一个位…

盐城大数据产业园人才公寓_岳西大数据产业园规划设计暨建筑设计方案公布,抢先一睹效果图...

近日,岳西县大数据产业园规划设计暨建筑设计方案公布。岳西县大数据产业园项目总占地面积17014.10㎡(约合25.52亩),拟建总建筑面积约为61590.84㎡(地上建筑面积39907.49㎡,地下建筑面积21602.35㎡)。以“科技圆环”为主题,组建出一…

【算法系列之五】对称二叉树

给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1/ \2 2/ \ / \ 3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1/ \2 2\ \3 3 说明: 如果你可以运用递归和迭代两种方法解决这个问题&a…

cuda默认函数与c++冲突_好程序员Python教程系列-第8讲:函数和模块

好程序员Python教程系列-第8讲:函数和模块,在讲解本章节的内容之前,我们先来研究一道数学题,请说出下面的方程有多少组正整数解。事实上,上面的问题等同于将8个苹果分成四组每组至少一个苹果有多少种方案,所…

mfc让图片与按钮一起_对许多张图片进行批量裁剪,看看我是如何快速做到的

概要:当我们需要对很多图片进行批量裁剪时,以往的办法是自己一张一张图片去操作,非常麻烦。有没有这样一个工具,能够帮我们批量进行处理呢?之前小编在网上找了非常多的软件,一个一个地安装试用,…

发电厂电气部分第三版pdf_火力发电厂电气主接线的特点

根据火力发电厂的容量及其在电力系统中的地位,一般可将火力发电厂分为区域性火力发电厂和地方性火力发电厂。这两类火力发电厂的电气主接线有各自的特点。一、区域性火力发电厂的电气主接线1、单机容量及总装机容量都较大单机容量多为300MW、600MW和少量1000MW,电厂…

定义一个dto对象_业务代码的救星——Java 对象转换框架 MapStruct 妙用

在业务项目的开发中,我们经常需要将 Java 对象进行转换,比如从将外部微服务得到的对象转换为本域的业务对象 domainobject,将 domainobject 转为数据持久层的 dataobject,将 domainobject 转换为 DTO 以便返回给外部调用方等。在转…

discuz设置用户每天回帖数_[建站教程]Discuz3.4设置QQ互联登陆教程

虽然现在很多人已经不在使用QQ了,但瘦死的骆驼比马大,QQ的用户基数还是很大,而且QQ里有大量的年轻用户,像我的表妹,表弟刚上初中。他们是忠诚的QQ用户。为了获取这批年轻的用户,我们还是有必要让网站支持QQ…

16进制加法 keil_C/C++编程笔记:C语言进制详解,二进制、八进制和十六进制

我们平时使用的数字都是由 0~9 共十个数字组成的,例如 1、9、10、297、952 等,一个数字最多能表示九,如果要表示十、十一、二十九、一百等,就需要多个数字组合起来。例如表示 58 的结果,一个数字不够,只能”…

MySQL的索引是什么?怎么优化?

索引类似大学图书馆建书目索引,可以提高数据检索的效率,降低数据库的IO成本。MySQL在300万条记录左右性能开始逐渐下降,虽然官方文档说500~800w记录,所以大数据量建立索引是非常有必要的。MySQL提供了Explain,用于显示…

git实现审核功能_一文教你如何搭建PDD分佣小程序实现财富自由

随着拼多多的火爆,很多淘客以各种方式通过推广拼多多商品获取返佣来月入万元,实现财富自由。只要你有流量或者足够努力,像其他淘客一样实现睡后过万财富自由不是梦。本文通过详细教程教你快速搭建属于自己的PDD分佣小程序,完成自己…

9型转x型 cobol_兰州一餐馆推鸳鸯牛肉面 9种面型一面多吃

来源标题:兰州一餐馆推鸳鸯牛肉面,清汤酸菜各一边还有9种面型,网友:能连吃三碗近日,位于甘肃兰州的一家牛肉面馆推出了鸳鸯牛肉面。一个大碗分隔为两边,一边是传统清汤牛肉面,另一边是酸菜牛肉面…

【算法系列之十三】二叉树两叶节点的最大距离

1、题目描述 给定一棵二叉树,计算这课二叉树的直径长度,即为二叉树任意两个节点间的最长路径。比如: 这棵二叉树的最长路径为3。 2、解题思路 使用递归进行求解,每次递归的过程中,先求出以某个节点为树根的二…

date比较大小 mybatis_Hibernate 和 MyBatis 哪个更好用?

Java大联盟帮助万千Java学习者持续成长关注作者|SylvanasSun郑沐兴https://zhuanlan.zhihu.com/p/21966051B 站搜索:楠哥教你学Java获取更多优质视频教程前言由于编程思想与数据库的设计模式不同,生出了一些ORM框架。核心都是将关系型数据库和…

简单的cpu飙升排查方法

1先来一段飙升代码 public class FindJavaThreadInTaskManager {public static void main(String[] args) {Thread thread new Thread(new Worker());thread.start();}static class Worker implements Runnable {Overridepublic void run() {while (true) {System.out.printl…

tortoisesvn创建部署项目_FrameWork如何进行云托管部署

介绍CloudBase Framework 是云开发官方出品的云原生一体化部署工具,可以帮助开发者将静态网站、后端服务和小程序等应用,一键部署到云开发 Serverless 架构的云平台上,自动伸缩且无需关心运维,聚焦应用本身,无需关心底…