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服务器受理。

Nginx反向代理及负载均衡相关推荐

  1. 懂点 Nginx 反向代理与负载均衡,是面试加分项没有之一

    点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 学到老活到老 前端圈一直很新,一直要不停的学习,而且在进入大厂的路上,还要求熟悉一门后台语言等等 ...

  2. Nginx反向代理,负载均衡,redis session共享,keepalived高可用

    本站点停止更新,请访问:blog.coocap.com 相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tom ...

  3. 【转】Nginx反向代理和负载均衡

    原文链接:http://www.cnblogs.com/shuoer/p/7820899.html Nginx反向代理和负载均衡 环境说明 由于我使用的是windows系统,所以我用虚拟机虚拟出来了3 ...

  4. nginx ------反向代理和负载均衡

    nginx ------反向代理和负载均衡 最近由于公司的业务增长 服务器承受不住压力经常出现崩溃现象 为了解决 使用nginx的负载均衡解决,以下是操作步骤: 1.nginx 的负载均衡:将压力分散 ...

  5. Nginx反向代理与负载均衡等配置文件示例

    Nginx反向代理于负载均衡等配置文件示例 Nginx.conf配置文件 worker_processes 8;events {worker_connections 1024; }http {incl ...

  6. 基于Nginx反向代理及负载均衡

    基于Nginx反向代理及负载均衡 参考:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass 只要没有被启用,默认就是 ...

  7. sql server代理无法启动_谁说前端不需要懂Nginx反向代理与负载均衡

    作者 | chenhongdong 链接 | https://juejin.im/post/5b01336af265da0b8a67e5c9 学到老活到老 前端圈一直很新,一直要不停的学习,而且在进入 ...

  8. 使用nginx负载均衡的webservice wsdl访问不到_谁说前端不用懂,Nginx 反向代理与负载均衡(超实用)...

    谁说前端不需要懂-Nginx反向代理与负载均衡 学到老活到老 前端圈一直很新,一直要不停的学习,而且在进入大厂的路上,还要求熟悉一门后台语言等等.用一句别人开玩笑的话来说,java十年前的技术现在还能 ...

  9. docker实现nginx反向代理、负载均衡

    docker实现nginx反向代理.负载均衡 启动docker服务 systemctl start docker.server 查看docker镜像 docker images 拉取tomcat.ng ...

  10. Nginx反向代理与负载均衡应用实践(二)

    Nginx反向代理与负载均衡应用实践(二) 链接:https://pan.baidu.com/s/1xB20bnuanh0Avs4kwRpSXQ 提取码:migq 复制这段内容后打开百度网盘手机App ...

最新文章

  1. 单(liu_runda学长的神题)
  2. linux 进程隐藏常见方法
  3. jenkins集群测试环境原理
  4. ABP VNext从单体切换到微服务
  5. stream 过滤俩个字段_Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合...
  6. android中实现“再按一次退出”功能
  7. SpringBoot + Mybatis/JPA
  8. php表示昨天_php 获取今日、昨日、上周、本月的起始与结束时间戳
  9. 《Phper》MySQL 的一些基本操作
  10. jenkins停止僵尸作业Click here to forcibly terminate running steps
  11. xmarks 又可以使用了. 太棒了
  12. 一行 Python 能实现什么丧心病狂的功能?
  13. [PCB]PCB光板生产过程中板子弯曲或翘起原因分析
  14. java外文资料_java外文文献(毕业设计).doc
  15. git由ssh改为http后,HTTP Basic: Access denied无法同步问题解决
  16. 基于BP-Adaboost神经网络的高斯函数模型预测研究-含Matlab代码
  17. C#使用原生方法将文字朗读出来
  18. 生产者消费者模型详解
  19. mysql对表的基本操作
  20. java idea封装快捷键_idea万能快捷键(alt enter),你不知道的17个实用技巧!!!

热门文章

  1. 建筑电气工程设计常用图形和文字符号_怎么看懂建筑电气工程图?用最直白方式,教你基础识图!超级详细...
  2. 如何改善虚幻引擎中的游戏线程CPU性能表现
  3. UE4 多人联机显示每个人的playid
  4. wince 6.0 pb
  5. 设计模式C++实现(3)——建造者模式
  6. 我有机器人合体成一个大力神_史上最菜大力神(三)——SS加强级高塔
  7. 3500 yuan to php,350 CNY to PHP Currency Converter - 人民币 菲律宾比索 汇率兑换
  8. c#中常用集合类和集合接口之接口系列【转】
  9. 第十一节:特性(常见的特性标签、自定义特性、特性的使用案例)
  10. SpringMVC 的执行流程