【Linux 运维架构】------ Nginx + Tomcat 动静分离、负载均衡

linux下的nginx+tomcat负载均衡简单原理 linux nginx+tomcat 负载均衡简单原理,其中以很简单明了的图片流程呈现nginx的负载均衡原理,当然其中也包含负载均衡的实例代码。供学者参考。 立即下载

一、原理解释:

(1)动静分离

为了提高网站的响应速度,减轻程序服务器(Tomcat,Jboss等)的负载,对于静态资源比如图片,js,css等文件,我们可以在反向代理服务器中进行缓存,这样浏览器在请求一个静态资源时,代理服务器就可以直接处理,而不用将请求转发给后端服务器。用户请求的动态文件比如servlet,jsp则转发给Tomcat,Jboss服务器处理,这就是动静分离。这也是反向代理服务器的一个重要的作用。

(2)正向代理和反向代理

1、正向代理:

  • 解释:也就是传说中的代理,他的工作原理就像一个跳板,简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我,从网站的角度,只在代理服务器来取内容的时候有一次记录,有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站。
  • 结论:正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。就像要访问google用vpn代理翻墙去访问(用户知道要访问真正的服务器)

2、反向代理:

  • 解释:例用户访问 http://www.example.com/readme ,但www.example.com上并不存在readme页面,他是偷偷从另外一台服务器上取回来,然后作为自己的内容吐给用户,但用户并不知情,这里所提到的 www.example.com 这个域名对应的服务器就设置了反向代理功能。
  • 结论:反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理 的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容 原本就是它自己的一样。(用户不知道要访问真正的服务器)

Nginx 实现负载均衡就是通过反向代理来实现的

二、实验示例:

角色IP地址
Nginx192.168.220.131
Tomcat01192.168.220.136
Tomcat02192.168.220.137

在这里插入图片描述
实验环境描述:

  • Nginx服务器做负载均衡和动静分离,服务器 Tomcat01,Tomcat02 做集群;
  • 客户发送请求,对于动态资源交给集群中的多台 Tomcat 处理,静态资源则由自己处理即可,这样,对于高并发的访问请求和提高网站的响应速度有极大的帮助。

(一)部署负载均衡(反向代理)

第一步:搭建 Nginx

搭建nginx,之前博客有详细介绍。

第二步:部署两台 Tomcat

(1)配置 JAVA 环境

1、安装 jdk

rpm -ivh jdk-8u201-linux-x64.rpm

安装后的位置在:/usr/java/

2、配置环境变量

vim /etc/profile,在文件末尾添加以下代码:

export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH

使环境变量生效:

source /etc/profile

3、使用 java -version 命令检查是否已安装成功
在这里插入图片描述
(2)安装和启动 Tomcat

1、解压缩包到指定路径,/usr/local/

tar zxvf apache-tomcat-9.0.16.tar.gz -C /usr/local/

2、解压完成后,生成 apache-tomcat-9.0.16 文件夹,改名为 Tomcat

mv apache-tomcat-9.0.16/ tomcat

3、为了方便控制 tomcat的开启和关闭,我们可以创建一个软连接

ln -s /usr/local/tomcat/bin/startup.sh /usr/bin/
ln -s /usr/local/tomcat/bin/shutdown.sh /usr/bin/

4、用 startup.sh 脚本开启tomcat
在这里插入图片描述

第三步:Tomcat 中创建测试页面

(1)创建目录

mkdir -p /web/webapp1
vim  /web/webapp1/index.jsp
添加以下内容:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
  <title>JSP test1 page</title>
</head>
<body>
  <% out.println("Welcome to test site, http://www.test1.com");%>
</body>
</html>

在这里插入图片描述
(2)指定站点

目录:/usr/local/tomcat/conf

vim server.xml
添加以下代码:

 <Context docBase="/web/webapp1" path="" reloadable="false">
 </Context>

在这里插入图片描述
(3)回到 bin/ 目录下,再重新启动一下 Tomcat

./shutdown.sh 
./startup.sh

(4)浏览器访问一下网页,检查是否成功
在这里插入图片描述
(5)第二台 Tomcat 部署和第一台一模一样,但是为了页面显示区别,在 /web/webapp1/index.jsp 文件中,稍作修改,将 test1 改为 test2
在这里插入图片描述

注意:在企业网中,群集中的 Tomcat 网站内容是一模一样的,客户无论访问到哪个Tomcat,提供的网站都是一致的。但是这边,为了展示实验效果,站点内容不一样,是为了区分在客户端能够看出是哪个Tomcat 提供了服务回应。

第四步:修改 Nginx 配置文件,添加服务器池

(1)文件位置:/usr/local/nginx/conf/nginx.conf

1、添加服务池:

 upstream tomcat-server {
                       server 192.168.220.136:8080 weight=1;
                       server 192.168.220.137:8080 weight=1;
                    }

在这里插入图片描述
2、在 location 段,添加以下代码,意为调用服务池(协议,端口等等)

proxy_pass http://tomcat-server;

在这里插入图片描述
(2)重启 nginx 服务

killall -1 nginx
第五步:客户端测试

这个架构中,nginx 只作为代理服务器而存在,我们作为用户访问网页,根本就不知道后面是哪一台具体提供服务的服务器,只需要将请求发送给 nginx 代理服务器,由 nginx 代理服务器,调用后台的Tomcat 给用户提供回应。

在客户机浏览器上访问 nginx 代理服务器:
在这里插入图片描述
在这里插入图片描述
至此,我们可以看到,从代理服务器,可以直接访问到群集Tomcat提供的服务。

(二)部署动静分离

对 java 文件请求转发到 Tomcat 处理

第一步:编辑 nginx 服务器的配置文件 nginx.conf

1、将动态页面交给 Tomcat处理:

在 server 段加入一个location段,代码如下:
     
     location ~.*.jsp$ {
            proxy_pass http://tomcat-server;
            proxy_set_header Host $host;
        }
同时需要注释掉另外一个 location 段中的:
# proxy_pass http://tomcat-server;

在这里插入图片描述

3、创建静态页面:

vim /usr/local/nginx/html/index.html

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>静态页面</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>静态页面</h1>
<p>这是一个静态页面</p>
</body>

4、为了展示效果,我们可以放两张图片进去(图片可以通过远程挂载的方式)

先创建目录名称,注意目录名称需要和 java 项目名称相同
1、创建目录:mkdir /usr/local/nginx/html/test
2、复制图片:cp lufei.jpg mingren.jpg /usr/local/nginx/html/test
第二步:配置 Tomcat,创建动态页面

(1)创建一个站点

mkdir /usr/local/tomcat/webapps/test

(2)创建动态网页,编辑

vim /usr/local/tomcat/webapps/test/index.jsp

<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/ html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>动态页面</title>
</head>
<body>
<div>动态页面</div><br><img src="lufei.jpg">    //添加页面图片
</body>
</html>

(3)第二台 tomcat 配置和第一台一样,同样,为了体现实验效果,我在第二台 tomcat上添加一张和第一台不同的图片,但是,现实中群集中 tomcat 的网页内容都是一样的。

vim /usr/local/tomcat/webapps/test/index.jsp

<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/ html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>动态页面</title>
</head>
<body>
<div>动态页面</div><br><img src="mingren.jpg">    //添加页面图片
</body>
</html>

(4)这里 tomcat 的作用就是指路径,nginx 的作用是存放图片,以上这两张照片都不是存放在 tomcat中的。

第三步:客户端测试

部署好动静分离和负载均衡后的 Nginx ,不仅是作为代理服务器存在了,其自身也是要处理静态资源请求的,同时将动态资源请求转发给集群的多台 tomcat 处理,同时实现 动静分离 + 负载均衡。

(1)客户端浏览器访问 Nginx 服务器(http://192.168.220.131/)
在这里插入图片描述
由于这个请求是静态资源,所有直接由 nginx 自身处理。

(2)浏览器访问 http://192.168.220.131/test/index.jsp
在这里插入图片描述在这里插入图片描述
由于这个请求是以 .jsp 为结尾的,是一个动态资源请求,所以是由 Nginx 转发给群集的tomcat处理,本群集中只有两台 tomcat 服务器,两台都提供了回应,即实现了负载均衡。

【LINUX】Nginx + Tomcat 动静分离实现负载均衡 【LINUX】Nginx + Tomcat 动静分离实现负载均衡【LINUX】Nginx + Tomcat 动静分离实现负载均衡 立即下载

相关推荐

SPI模式下的SD卡读写,为什么你的数据总出错?详解时序与状态机避坑指南

本文深入探讨SPI模式下SD卡读写数据出错的根本原因,提供时序优化与状态机设计的实战指南。针对时钟周期计数、状态机跳转和忙检测等核心问题,详解命令时序细节、状态机同步策略及高级避坑技巧,帮助开发者提升SD卡在SPI模式下的稳定性和性能。

weixin_30514745的博客 261

linux单机部署多tomcat+nginx实现负载均衡

一、nginx安装 1、安装基本编译软件 yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel yum install pcre 2、下载安装nginx 2.1下载 可以通过 wget http://nginx.org/download/ngi...

luokn1995的博客 1037

FPGA优质开源项目 – UDP万兆光纤以太网通信

本文开源一个FPGA项目:UDP万兆光通信。文章末尾有该工程源码获取方式,有需要的小伙伴可以点赞、分享支持一下~

cjx_csdn的博客 4766

Linux部署Tomcat和Nginx,并实现Nginx的动静分离

讲解了Linux中部署Tomcat和Nginx的相关步骤以及注意事项;以及Nginx实现动静分离的过程;并收录了一部分博主在安装过程中遇到的问题及解决方法。

Java.L的博客 1382

Cherry Studio 新手必看:5分钟搞定MCP服务器配置(附常见问题解决)

本文为Cherry Studio新手提供了详细的MCP服务器配置指南。文章从核心概念入手,解释了Cherry Studio作为MCP客户端如何通过MCP协议安全、标准化地扩展AI助手能力。重点讲解了uv和Bun环境的安装与常见网络问题的解决方案,并演示了如何添加首个MCP服务器(如mcp-server-fetch),助你快速构建可扩展的智能工作流。

corn8的博客 595

全球最大光伏电池缺陷异常检测数据集PVELAD【发布】

下载地址 1:GitHub - binyisu/PVEL-AD 下载地址 2:http://aihebut.com/col.jsp?id=118 下载地址 3:NAVEDownload 竞赛测试系统:Photovoltaic cell anomaly detection | Kaggle 一、简介 PVEL-AD 数据集又叫做EL2021数据集是用于对光伏电池异常缺陷检测方法进行基准测试的数据集,重点是光伏电池工业检测。PVEL-AD包含 36,543 张具有各种内部缺陷和异构背...

苏打水的杯子的博客 2万+

Linux---Nginx与tomcat动静分离

Linux—Nginx与tomcat动静分离 一.什么是动静分离? 1.动静分离是将网站的静态资源与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用的访问 2.静态资源部署在Nginx,将静态资源部署在Nginx上,后台项目部署到应用服务器上,根据一定规则静态资源的请求,全部去请求nginx服务器,达到动静分离的目标 二.优缺点: 优点:API接口服务化;前后端开发并行;减轻后端服务器...

obsessiveY的博客 526

ROS 2 + Astra Pro深度相机实战:5分钟搞定远程可视化与距离检测(附避坑指南)

本文提供了一份详尽的ROS 2与Astra Pro深度相机集成实战指南。通过5分钟快速部署,实现远程可视化与实时目标距离检测。文章涵盖驱动安装、SSH+X11远程调试、核心测距节点编写,并附有详细的避坑指南,帮助开发者高效构建机器人视觉感知系统。

weixin_29232507的博客 278

nginx+tomcat整合(实现网站动静分离)

nginx+tomcat整合(实现网站动静分离)

qq_34953582的博客 514

用 YOLOv11‑Seg 做工地实例分割:从 0 起步到效果调优,真香!

这不是一篇“官方文档翻译”,而是一篇。

weixin_43199439的博客 776

面试官连夜整理:103道AI Agent面试题,答对一半直接加薪50%

维度AutoGPTLangGraphAutoGen控制流LLM 驱动的隐式循环代码层定义的显式状态图对话驱动的自动流转状态存储Prompt 上下文中(易丢失)结构化 State 对象(可持久化)对话历史(自动累积)分支能力依赖 LLM 的文本输出(不稳定)条件边 + 节点路由(确定性)多 Agent 对话自然分支(涌现式)回溯/回滚无原生支持,只能重新开始原生 Checkpoint 支持时间旅行无全局回滚,单 Agent 可重启人机协同仅人工在关键点介入(需要自定义)原生支持。

weixin_35774598的博客 620

linux Nginx+Tomcat负载均衡、动静分离

tomcat 一款 java 开发的开源免费的 Web 应用服务程序作用:(1)可以作为 Web 应用服务器,处理静态 Web 页面, 如 html 页面,但性能一般(2)还可以作为 Servlet/JSP 容器,处理 java 语言开发的 jsp 动态页面应用程序,这也是 tomcat 主要的应用场景。

m0_62231324的博客 744

SAP-ABAP:在SAP系统中,COEP表(成本控制对象行项目表)详解

在SAP系统中,COEP表(成本控制对象行项目表)详解

baidu_35680696的博客 1838

Nginx高性能Web服务器系列教程-吴光科-专题视频课程

Nginx高性能Web服务器视频培训课程,该教程通过本次Nginx全套系列实战课程的学习:Nginx配置、安装、企业实战Nginx+tomcat动静分离架构、日志切割、分析、常见故障解析、均衡TCP协议案例等。大家可以更加熟练Nginx在企业中的应用,了解目前大中型企业里面运维架构,以及学会如何提升自己的能力,满足职业生涯的发展,做到准备充足,备战运维。...

110

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Linux运维企业架构实战系列

Linux运维企业架构项目实战系列 项目实战1—LNMP的搭建、nginx的ssl加密、权限控制的实现 项目实战2—LVS、nginx实现负载均衡系列 2.1 项目实战2.1—实现基于LVS负载均衡集群的电商网站架构 2.2 项目实战2.2—nginx 反向代理负载均衡、动静分离和缓存的实现 2.3 项目实战2.3—Tengine实现反向代理负载均衡 项目实战3—实现基于Keepalived+L...

weixin_30640291的博客 912

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Nginx+Tomcat(负载均衡、动静分离)

正向和反向代理的作用以及工作流程;负载均衡的几个模式;部署nginx+tomcat具体实验以及测试效果

2201_75444658的博客 3065

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Nginx+Tomcat负载均衡、动静分离

Tomcat 概述最初是由Sun的软件构架师詹姆斯·邓肯·戴维森开发安装Tomcat后,安装路径下面的目录和文件,是使用或者配置Tomcat的重要文件Tomcat 重要目录目录名作用bin存放启动和关闭Tomcat的脚本conf存放Tomcat 不同的配置文件doc存放Tomcat文档lib存放Tomcat 运行需要的jar包(库文件)logs存放Tomcat运行过程中产生的日志文件src存放Tomcat的源代码webappsTomcat的主要web发布目录。

qq_63994746的博客 4251

Nginx+Tomcat动静分离+keepalived高可用

Nginx+Tomcat动静分离

qq_46480020的博客 1100

图文详解 配置Nginx+Tomcat负载均衡、动静分离集群

Nginx+Tomcat负载均衡、动静分离1.准备三台服务器2.部署Nginx 负载均衡器3.部署2台Tomcat 应用服务器 1.准备三台服务器 Nginx 服务器:192.168.116.100:80 Tomcat服务器1:192.168.116.70:8080 Tomcat服务器2:192.168.116.120:8080 192.168.116.120:8081 2.部署Nginx 负载均衡器 systemctl stop firewalld setenforce 0 yum -y insta

穷则独善其身 达则兼善天下 1306

源码nginx+tomcat动静分离,linux实现动静分离,详解图文结合~-@bozai

nginx+tomcat环境准备【centos6一台】1.关闭iptables和SELinux,并测试yum可用2. 安装nginx所依赖的库环境3.解压/编译/安装nginx4.安装JDK环境,并配置环境变量5.安装tomcat6.配置使用Nginx反向代理,转发JSP的请求给Tomcat7.启动Nignx和Tomcat8.访问测试动静分离效果 环境准备【centos6一台】 1.关闭iptables和SELinux,并测试yum可用 service iptables stop setenforce

qing1912的博客 398

Linux运维web篇 nginx+tomcat实现动静分离和负载均衡

文章目录一、原理二、使用步骤安转nginx和tomcat 一、原理 Nginx作为负载均衡器,Tomcat作为应用服务器 nginx处理静态内容 动态内容反向代理给tomcat处理 将动态内容和静态内容分开处理 减轻服务器的压力 架构图 二、使用步骤 安转nginx和tomcat systemctl stop firewalld setenforce 0 #安装所需开发包和编译环境、编译器 yum -y install pcre-devel zlib-devel openssl-devel gcc g

weixin_49172531的博客 1573

浅谈Nginx和Apache和Tomcat

首先,我们从Web服务器和Web引用服务器讲起 web服务器 一般我们把发出http请求的一方称作请求方,比如浏览器就是http的请求方,那么应答方就是我们常说的web服务器(web Server)。 在硬件层面上,web服务器可以简单的理解为另一台性能更好的主机。不过在现实生活中,不仅仅只是一台主机,而是利用反向代理、负载均衡等等技术组成的一大群机房。 在软件层面上指的是提供web服务的应用程序。我的理解就是响应http请求,返回超文本文件等数据,或者把请求转发给后面的Tomcat、node.js等应用服

weixin_A13253323604 494

部署Nginx和Tomcat动静分离

一、概述 1.1 简介 动态服务器的问题,往往就是并发能力太弱,往往需要多台动态服务器一起提供服务。如何把并发的压力分摊,这就需要调度,采用一定的调度策略,将请求分发给不同的服务器,这就是Load Balance负载均衡。 当单机Tomcat,演化出多机多级部署的时候,一个问题便凸显出来,这就是Session。而这个问题的由来,都是由于HTTP协议在设计之初没有想到未来的发展。 1.2 原理 ...

fangandpu的博客 1144
上一篇: Nginx + Tomcat 负载均衡群集(实验)
下一篇: Squid代理 ------ 传统代理 + 透明代理
Benny-文俊
博客等级 码龄7年 112粉丝 150原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值