Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡

文章目录

  • 1. 配置反向代理
    • 1.1 前置准备
    • 1.2 代理服务器配置
    • 1.3 真实服务器配置
    • 1.4 客户机配置
  • 2. Tomcat 多实例部署
    • 2.1 部署JDK
    • 2.2 设置JDK环境变量
    • 2.3 部署Tomcat服务
    • 2.4 路径启动
  • 3. Nginx联动Tomcat实现动静分离、负载均衡
    • 3.1 基本原理
    • 3.2 前置准备
    • 3.3 配置nginx1实现四层代理,负载均衡
    • 3.4 配置nginx2\3实现七层代理,动静分离
    • 3.5 Tomcat配置,作为动态资源服务器
    • 3.6 测试

1. 配置反向代理

1.1 前置准备

#所需环境
192.168.67.100 #nginx代理服务器
192.168.67.101 #客户机
192.168.67.102 #真实服务器

1.2 代理服务器配置

vim /apps/nginx/conf/nginx.conf
#编辑主配置文件#在http块中添加
include        /apps/nginx/conf.d/*.conf
vim /apps/nginx/conf.d/pc.com
#编辑子配置文件server{listen 192.168.67.100:80;server_name www.pc.com;location / {root  /apps/nginx/html/pc;proxy_pass http://192.168.67.102;}
}nginx -t
nginx -s reload
#重新加载

在这里插入图片描述

1.3 真实服务器配置

systemctl stop firewalld
setenforce 0 
#关闭防火墙和selinux
yum  install   httpd  -y #安装服务cd  /var/www/html
echo   "Hi~"  > index.html #主页内容systemctl start httpd #开启服务

在这里插入图片描述

vi /etc/hosts
#添加地址映射192.168.67.100 www.pc.com

在这里插入图片描述

1.4 客户机配置

vim  /etc/hosts192.168.67.100  www.pc.com

在这里插入图片描述

测试

客户机访问代理服务器

curl www.pc.com

在这里插入图片描述

2. Tomcat 多实例部署

2.1 部署JDK

#所需安装包
apache-tomcat-9.0.16.tar.gz  
jdk-8u201-linux-x64.rpmrpm -ivh jdk-8u201-linux-x64.rpm  

在这里插入图片描述

2.2 设置JDK环境变量

#查看全局配置文件
vim /etc/profile

在这里插入图片描述

vi /etc/profile.d/java.shexport JAVA_HOME=/usr/java/jdk1.8.0_201-amd64   
#java家目录
export JRE_HOME=$JAVA_HOME/jre
#jre家目录
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
#指向java工具包和环境包
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
#java环境变量

在这里插入图片描述

source /etc/profile.d/java.sh
#调用Java脚本java -version
#查看当前JDK版本

在这里插入图片描述

2.3 部署Tomcat服务

cd /opt
tar xf apache-tomcat-9.0.16.tar.gz#解压tomcat源码包

在这里插入图片描述

cp -r apache-tomcat-9.0.16/ /usr/local/tomcat1
cp -r apache-tomcat-9.0.16/ /usr/local/tomcat2
cp -r apache-tomcat-9.0.16/ /usr/local/tomcat3
#将tomcat复制到usr/local ,并且改名,方便管理

在这里插入图片描述

#更改tomcat1、2、3 server.xhl文件
vi /usr/local/tomcat1/conf/server.xml

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

重复操作

#修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量
#tomcat1
vi /usr/local/tomcat1/bin/startup.sh #添加
export CATALINA_BASE=/usr/local/tomcat1
export CATALINA_HOME=/usr/local/tomcat1
export TOMCAT_HOME=/usr/local/tomcat1

在这里插入图片描述

vi /usr/local/tomcat1/bin/shutdown.sh#添加内容
export CATALINA_BASE=/usr/local/tomcat1
export CATALINA_HOME=/usr/local/tomcat1
export TOMCAT_HOME=/usr/local/tomcat1

在这里插入图片描述
重复上述操作

2.4 路径启动

#绝对路径启动/usr/local/tomcat1/bin/startup.sh/usr/local/tomcat2/bin/startup.sh/usr/local/tomcat3/bin/startup.sh
ss -natp |grep java
#查看进程

在这里插入图片描述

#网页启动
192.168.67.102:8081
192.168.67.102:8082
192.168.67.102:8083

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. Nginx联动Tomcat实现动静分离、负载均衡

3.1 基本原理

服务端接收来自客户端的请求中,包含静态资源和动态资源,静态资源由Nginx进行处理,动态资源Nginx转发至后端由tomcat负责处理。

3.2 前置准备

在这里插入图片描述

#tomcat多实例
192.168.67.102:8081
192.168.67.102:8082
192.168.67.102:8083#四层实现负载均衡
nginx1 192.168.67.100 #用性能最好的一台#七层实现动静分离
nginx2 192.168.67.101
nginx3 192.168.67.103#客户机
192.168.67.104

3.3 配置nginx1实现四层代理,负载均衡

systemctl stop firewalld
setenforce 0
#关闭防火墙和selinux策略
#编译安装nginx并加入systemd服务
#依赖
yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
#创建管理用户
useradd -M -s /sbin/nologin nginx
#编译安装ngnix
cd /opt#解压缩软件包
tar -zxf nginx-1.18.0.tar.gzcd nginx-1.18.0
#加入源码包#搭建编译环境
./configure \
--prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-file-aio \									#启用文件修改支持
--with-http_stub_status_module \					#启用状态统计
--with-http_gzip_static_module \					#启用 gzip静态压缩
--with-http_flv_module \							#启用 flv模块,提供对 flv 视频的伪流支持
--with-http_ssl_module								#启用 SSL模块,提供SSL加密功能
--with-stream										#启用 stream模块,提供4层调度make -j2 && make install
#编译并安装 #软连接 添加到环境变量中
ln -s /apps/nginx/sbin/nginx /usr/local/
#添加到系统服务中
vim /lib/systemd/system/nginx.service[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.targetsystemctl daemon_reload
chmod 754 /lib/systemd/system/nginx.service#启动nginx
systemctl start nginx
systemctl status nginx
#查看运行状态 

在这里插入图片描述

#配置负载均衡
vim /apps/nginx/conf/nginx.conf
...
#写在http部分上面
stream {upstream myserver {server 192.168.67.101:80 weight=1;server 192.168.67.103:80 weight=1;}server {listen 80;proxy_pass myserver;}
}nginx -t
nginx -s reload 
#重新加载

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ss -natp |grep nginx
#查看是否正常运行

在这里插入图片描述

3.4 配置nginx2\3实现七层代理,动静分离

nginx2和3配置基本相同,主页文件相同名字,不同内容的文本和静态网页,用于测试负载均衡

#前置准备
systemctl disable firewalld --now
setenforce 0#yum安装nginx
yum -y install epel-release.noarch -y
yum -y install nginx #如果开启了httpd服务关了,不然会导致nginx无法开启#开启服务
systemctl start nginx 
vim /etc/nginx/nginx.conf
#编辑主配置文件

在这里插入图片描述

在这里插入图片描述

#添加并编辑子配置文件
touch conf.d/scj.conf
vim conf.d/scj.conf

在这里插入图片描述

nginx -t
nginx -s reload
#重新加载
#静态页面
cd /usr/share/nginx/html
mkdir scj
echo "This is nginx2 ,from scj" > scj/index.html

在这里插入图片描述
在这里插入图片描述

3.5 Tomcat配置,作为动态资源服务器

#前置准备
systemctl stop firerwalld
setenforce 0#当前已经部署了tomcat多实例
#详情见上
#准备动态资源
mkdir /usr/local/tomcat1/webapps/test
mkdir /usr/local/tomcat2/webapps/test
mkdir /usr/local/tomcat3/webapps/test
#创建动态资源根目录
#创建动态页面#tomcat1
vi /usr/local/tomcat1/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>   
</head>
<body>
<% out.println("动态页面 1,http://www.test1.com");%>
</body>
</html>#创建动态页面#tomcat2
vi /usr/local/tomcat2/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test2 page</title>   
</head>
<body>
<% out.println("动态页面 2,http://www.test1.com");%>
</body>
</html>#tomcat3
vi /usr/local/tomcat3/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test3 page</title>   
</head>
<body>
<% out.println("动态页面 3,http://www.test1.com");%>
</body>
</html>
#重启服务/usr/local/tomcat1/bin/shutdown.sh 
/usr/local/tomcat1/bin/startup.sh /usr/local/tomcat2/bin/shutdown.sh 
/usr/local/tomcat2/bin/startup.sh /usr/local/tomcat3/bin/shutdown.sh 
/usr/local/tomcat3/bin/startup.sh ss -natp |grep java
#查看运行情况

在这里插入图片描述

3.6 测试

#访问静态资源
浏览器访问 http://192.168.67.100/scj/index.html
多次刷新

在这里插入图片描述
在这里插入图片描述

#访问动态资源
http://192.168.67.100/test/index.jsp
多次刷新

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

HCS 中的一些概念(二)

一、Service OM 1、首页&#xff08;资源状态&#xff09; 2、服务列表 计算资源&#xff1a;计算资源又分为可用分区&#xff08;AZ&#xff09;、规格和虚拟机组&#xff0c;可在此处创建虚拟机、虚拟机组、主机组和规格 网络资源&#xff1a;网络资源又分为物理网络…

分享一下微信小程序开发步骤是什么

微信小程序开发步骤是开发微信小程序所需要遵循的一系列步骤。以下是微信小程序开发的步骤&#xff1a; 一、注册开发者账号 首先&#xff0c;需要注册一个微信开发者账号。可以在微信公众平台上注册并选择“小程序”开发者类型。在注册过程中&#xff0c;需要提供一些必要的信…

Vue 报错error:0308010C:digital envelope routines::unsupported 解决方案(三种)

新换的电脑&#xff0c;系统装的win11&#xff0c;node也是18的版本。 跑了一下老项目&#xff0c;我用的是HbuilderX&#xff0c;点击运行和发行时&#xff0c;都会报错&#xff1a; Error: error:0308010C:digital envelope routines::unsupported 出现这个错误是因为 node.j…

掌握信息利器,快速发现潜在商机——介绍一款高效的数据检索软件

掌握信息利器&#xff0c;快速发现潜在商机——介绍一款高效的数据检索软件 在当今信息爆炸的时代&#xff0c;获取准确、实时的信息变得至关重要。为了帮助您快速发现潜在商机&#xff0c;我们推出了一款功能强大的数据检索软件。无论您是市场调研人员、销售专员还是企业经营者…

CSP 201403-1 相反数

答题 用两个优先队列&#xff0c;一个记录正数升序排序&#xff0c;一个记录负数降序排序&#xff0c;然后在两个队列都不为空的情况下取二者top相加与0比较大小&#xff0c;如果等于0&#xff0c;那么相反数的数目增加一对并同时弹出队列&#xff0c;如果小于0&#xff0c;那…

SpringMVC之CRUD------增删改查

目录 前言 配置文件 pom.xml文件 web.xml文件 spring-context.xml spring-mvc.xml spring-MyBatis.xml jdbc.properties数据库配置文件 generatorConfig.xml log4j2日志文件 后台 PageBaen.java PageTag.java 切面类 biz层 定义一个接口 再写一个实现类 …

【赠书活动】考研备考书单推荐

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

【C++】哈希——哈希的概念,应用以及闭散列和哈希桶的模拟实现

前言&#xff1a; 前面我们一同学习了二叉搜索树&#xff0c;以及特殊版本的平衡二叉搜索树&#xff0c;这些容器让我们查找数据的效率提高到了O(log^2 N)。虽然效率提高了很多&#xff0c;但是有没有一种理想的方法使得我们能提高到O(1)呢&#xff1f;其实在C语言数据结构中&a…

关于mybatisplus报错:Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplat的问题

可能是mybatisplus版本不兼容的问题&#xff0c;我之前用的3.4.0&#xff0c;springboot版本是3.1.3&#xff0c;maven版本是3.8.8&#xff0c;运行的时候报了这个错。现在修改了mybatisplus的版本&#xff0c;如下图&#xff1a; 这样就不报错了。 大家可以在这里找合适的my…

成都优优聚为什么值得信任?

成都优优聚能信任作为一家专业的电商服务公司&#xff0c;拥有丰富的经验和专业的团队&#xff0c;能够为商家提供全方位的美团代运营服务。 美团外卖作为国内领先的外卖平台&#xff0c;具有庞大的用户群体和丰富的商家资源。然而&#xff0c;美团代运营对于很多刚开始接触美团…

Android平台GB28181接入SDK

华脉智联推出的Android平台GB28181接入SDK&#xff0c;可实现不具备国标音视频能力的 Android终端&#xff0c;通过平台注册接入到现有的GB/T28181—2016服务&#xff0c;可用于如执法记录仪、智能安全帽、智能监控、智慧零售、智慧教育、远程办公、明厨亮灶、智慧交通、智慧工…

ChatGPT追祖寻宗:GPT-1论文要点解读

论文地址&#xff1a;《Improving Language Understanding by Generative Pre-Training》 最近一直忙着打比赛&#xff0c;好久没更文了。这两天突然想再回顾一下GPT-1和GPT-2的论文&#xff0c; 于是花时间又整理了一下&#xff0c;也作为一个记录~话不多说&#xff0c;让我们…

生成多样、真实的评论(2019 IEEE International Conference on Big Data )

论文题目&#xff08;Title&#xff09;&#xff1a;Learning to Generate Diverse and Authentic Reviews via an Encoder-Decoder Model with Transformer and GRU 研究问题&#xff08;Question&#xff09;&#xff1a;评论生成&#xff0c;由上下文评论->生成评论 研…

2023高教社杯数学建模B题思路分析 - 多波束测线问题

# 1 赛题 B 题 多波束测线问题 单波束测深是利用声波在水中的传播特性来测量水体深度的技术。声波在均匀介质中作匀 速直线传播&#xff0c; 在不同界面上产生反射&#xff0c; 利用这一原理&#xff0c;从测量船换能器垂直向海底发射声波信 号&#xff0c;并记录从声波发射到…

界面控件DevExtreme DateRangeBox组件发布,支持日期范围选择!

在最新的v23.1版本中&#xff0c;DevExpress官方已经正式发布了DevExtreme DateRangeBox小部件&#xff0c;支持所有JavaScript框架&#xff0c;包括Angular、React、Vue和jQuery。这个新的控件允许最终用户选择一个日期范围&#xff0c;该组件继承了DateBox组件的特性&#xf…

一文了解气象观测站是什么?

一、气象观测站的定义 气象观测站是一种专门负责观测、记录气象数据的设施&#xff0c;包括风向、风速、温度、湿度、气压、降水量等多个气象要素。这些数据不仅对科研和预报具有重要意义&#xff0c;还对我们的日常生活有着极大的影响。 二、气象观测站的种类 气象观测站根…

Python练习分割字符串

str"itheima itcast boxuegu" # 统计字符串类有多少个“it”字符 count str.count("it") print(f"字符串类有{count}个“it”字符") # 将字符串内的空格全部替换为字符&#xff1a;“|” str_replace str.replace(" ", "|"…

一篇文章带你了解红黑树并将其模拟实现

了解红黑树并将其模拟实现 红黑树的概念和性质1. 概念2. 性质 红黑树的结构红黑树的节点定义及红黑树结构成员定义红黑树的插入1. 按照二叉搜索的树规则插入新节点2. 检测新节点插入后&#xff0c;红黑树的性质是否造到破坏情况一: cur为红&#xff0c;p为红&#xff0c;g为黑&…

从“白人饭”到美味佳肴,拓世AI为你打造独一无二的饮食计划

最近“白人饭”作为一种饮食方式在社交媒体上火了&#xff0c;成为打工人新的“午餐之光”。所谓“白人饭”&#xff0c;就是花最少的功夫准备仅仅能维系基本器官正常运作的食物&#xff0c;主打生吃或者简单炒&#xff0c;比如一个丹麦网友晒出的同事的午饭就是几根小胡萝卜和…

AjaxJavaScriptcss模仿百度一下模糊查询功能

1、效果 如下图所示&#xff0c;我们在输入大学时&#xff0c;程序会到后端查询名字中包含大学的数据&#xff0c;并展示到前端页面。 用户选择一个大学&#xff0c;该大学值会被赋值到input表单&#xff0c;同时关闭下拉表单&#xff1b; 当页面展示的数据都不符合条件时&…