Nginx七层代理,四层代理 + Tomcat多实例部署

目录

1.tomcat多实例部署

准备两台虚拟机

进入pc1 pc2同时安装jdk

进入pc1 pc2安装tomcat

PC1配置(192.168.88.50)

安装tomcat多实例

tomcat2中修改端口

启动tomcat1 tomcat2

分别在三个tomcat服务上部署jsp的动态页面

2.nginx的七层代理,实现动静分离

准备两台虚拟机

部署nginx基于协议的反向代理(七层代理)

nginx1(192.168.88.22)测试

静态

动态

nginx2(192.168.88.31)测试 

静态

动态 

3.nginx的四层代理,实现负载均衡

实验准备

修改配置文件

实验验证


配置图

1.tomcat多实例部署

准备两台虚拟机

192.168.88.50                     #pc1               
192.168.88.51                     #pc2

systemctl stop firewalld
setenforce 0                      #前期准备工作

进入pc1 pc2同时安装jdk

tar -xf jdk-8u361-linux-x64.tar.gz
mv jdk1.8.0_361/ /usr/local
cd /usr/local

vim /etc/profile.d/java.sh

export JAVA_HOME=/usr/local/jdk1.8.0_361
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

source /etc/profile.d/java.sh
java -version

进入pc1 pc2安装tomcat

tar -xf apache-tomcat-9.0.16.tar.gz
cd /usr/local/tomcat/bin                        

vim /usr/lib/systemd/system/tomcat.service

[Unit]
Description=tomcat server
Wants=network-online.target
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target                   #将tomcat添加至系统服务

systemctl start tomcat
systemctl status tomcat
ss -natp|grep java                           #启动tomcat

PC1配置(192.168.88.50)

安装tomcat多实例

cd /usr/local
mv tomcat tomcat1
mkdir tomcat tomcat2
mv tomcat1 tomcat2 tomcat     
cd /opt
mv apache-tomcat-9.0.16 /usr/local/tomcat/tomcat2    #部署

cd /usr/local/tomcat/tomcat2/apache-tomcat-9.0.16
mv * ..
vim /usr/local/tomcat/tomcat1/bin/startup.sh
##21行添加##
export CATALINA_HOME=/usr/local/tomcat/tomcat1
export CATALINA_BASE=/usr/local/tomcat/tomcat1
export TOMCAT_HOME=/usr/local/tomcat/tomcat1

vim /usr/local/tomcat/tomcat1/bin/shutdown.sh
##21行添加##
export CATALINA_HOME=/usr/local/tomcat/tomcat1
export CATALINA_BASE=/usr/local/tomcat/tomcat1
export TOMCAT_HOME=/usr/local/tomcat/tomcat1

vim /usr/local/tomcat/tomcat2/bin/startup.sh
##21行添加##
export CATALINA_HOME=/usr/local/tomcat/tomcat2
export CATALINA_BASE=/usr/local/tomcat/tomcat2
export TOMCAT_HOME=/usr/local/tomcat/tomcat2

vim /usr/local/tomcat/tomcat2/bin/shutdown.sh

##21行添加##
export CATALINA_HOME=/usr/local/tomcat/tomcat2
export CATALINA_BASE=/usr/local/tomcat/tomcat2
export TOMCAT_HOME=/usr/local/tomcat/tomcat2

tomcat2中修改端口

vim /usr/local/tomcat/tomcat2/conf/server.xml

#22行,修改Server prot,默认为8005 -> 修改为8006
<Server port="8006" shutdown="SHUTDOWN">
 
#69行,修改Connector port,HTTP/1.1  默认为8080 -> 修改为8081
<Connector port="8081" protocol="HTTP/1.1"
 
#116行,修改Connector port AJP/1.3,默认为8009 -> 修改为8010
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />

启动tomcat1 tomcat2

systemctl stop tomcat           #如果刚刚用sysemctl启动了tomcat一定要先关闭在重启,不然会报错

/usr/local/tomcat/tomcat1/bin/startup.sh
/usr/local/tomcat/tomcat2/bin/startup.sh

分别在三个tomcat服务上部署jsp的动态页面

##192.168.88.50##
cd /usr/local/tomcat/tomcat1/webapps
mkdir test
vim test/123.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-    8"%>
<html>
<head>
<title>JSP test page</title>
</head>
<body>
<% out.println("动态页面 1,http://www.test1.com");%>
</body>
</html>

cd /usr/local/tomcat/tomcat2/webapps
mkdir test
vim test/123.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-    8"%>
<html>
<head>
<title>JSP test page</title>
</head>
<body>
<% out.println("动态页面 2,http://www.test2.com");%>
</body>
</html>

##192.168.88.51##
cd /usr/local/tomcat/webapps
mkdir test
vim test/123.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-    8"%>
<html>
<head>
<title>JSP test page</title>
</head>
<body>
<% out.println("动态页面 3,http://www.test3.com");%>
</body>
</html>

2.nginx的七层代理,实现动静分离

准备两台虚拟机

192.168.88.22                     #nginx1
192.168.88.31                     #nginx2
systemctl stop firewalld
setenforce 0                      #前期准备工作

部署nginx基于协议的反向代理(七层代理)

vim /usr/local/nginx/conf/nginx.conf


upstream tomcat_server{
     server 192.168.88.50:8080 weight=1;
     server 192.168.88.50:8081 weight=1;
     server 192.168.88.51:8080 weight=1;
}

location ~ .*\.jsp$ {
     proxy_pass http://tomcat_server;
     proxy_set_header HOST $host;
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_    for;
}

location /static {
     root   html;
     index  index.html index.htm;
}

cd /usr/local/nginx/html
mkdir static
vim static/test.html

<html>
<body>
<h1>this is static web01</h1>
</body>
</html>

systemctl restart nginx

nginx1(192.168.88.22)测试

静态

动态

nginx2(192.168.88.31)测试 

静态

动态 

3.nginx的四层代理,实现负载均衡

实验准备

192.168.88.13       #安装有nginx

nginx -V
--with-stream       #有此模块

修改配置文件

vim /usr/local/nginx/conf/nginx.conf

stream {
   upstream nginx_server {
   server 192.168.88.22:80;
   server 192.168.88.31:80;
}

server {
    listen 9527;
    proxy_pass nginx_server;
}
}

systemctl restart nginx

实验验证

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用opencv的Canny算子实现图像边缘检测

1 边缘检测介绍 图像边缘检测技术是图像处理和计算机视觉等领域最基本的问题&#xff0c;也是经典的技术难题之一。如何快速、精确地提取图像边缘信息&#xff0c;一直是国内外的研究热点&#xff0c;同时边缘的检测也是图像处理中的一个难题。早期的经典算法包括边缘算子方法…

使用set和emit在uni-app中实现响应式属性和自定义事件

在uni-app中&#xff0c;我们经常需要动态设置响应式属性&#xff0c;并且通过自定义事件来实现组件间的通信。这时&#xff0c;我们可以使用set和emit来轻松实现这些功能。 使用$set动态设置响应式属性 在Vue中&#xff0c;我们可以使用来动态设置响应式属性。在uniapp中使用…

java基础知识④:设计模式

目录 一、设计模式 1️⃣创建型设计模式&#xff08;常用&#xff1a;单例、工厂、抽象工厂&#xff09; 2️⃣结构型设计模式&#xff08;常用&#xff1a;适配器、装饰者、外观、代理&#xff09; 3️⃣行为型设计模式&#xff08;常用&#xff1a;观察者、策略、模板方法、命…

如何使用ArcGIS Pro裁剪影像

对影像进行裁剪是一项比较常规的操作&#xff0c;因为到手的影像可能是多种范围&#xff0c;需要根据自己需求进行裁剪&#xff0c;这里为大家介绍一下ArcGIS Pro中裁剪的方法&#xff0c;希望能对你有所帮助。 数据来源 本教程所使用的数据是从水经微图中下载的影像和行政区…

Springboot的火车票订票系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; Springboot的火车票订票系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#…

Spring Boot整合Sharding-JDBC实现数据脱敏

目录 背景ShardingSphere脱敏规则sharding-jdbc数据脱敏数据脱敏配置数据分片 数据脱敏配置 背景 对互联网公司、传统行业来说&#xff0c;数据安全一直是极为重视和敏感的话题。数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形&#xff0c;实现敏感隐私数据的可靠保护…

【Avue】点击新增再点击表单得radio选项出现新表单,且编辑页面关不掉新表单处理方法

一、问题描述 1、点击新增 2、 点击radio选择值 1、点击否得时候没反应 2、点击是得时候出现新表单 2.1、旧代码 {label: 是否危险源,prop: isBigdanger,searchLabelWidth: 120,overHidden: true,span: 24,rules: [{required: true,message: 请选择是否重大危险源,trigger: bl…

Mapreduce小试牛刀(2)--java api

1.同hdfs 的java api,我们首先要在IDE中建立一个maven项目 pom.xml中配置如下&#xff1a; <dependencies><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-mapreduce-client-common</artifactId><version>3.…

磁盘坏道扫描工具 Macrorit Disk Scanner v6.7.0 中文免费版 -供大家学习研究参考

非常方便实用的磁盘坏道修复软件。Wipe Bad Disk功能强大好用&#xff0c;通过特殊的算法来强制将硬盘的坏道删除清空格式化&#xff0c;从而拯救因产生坏道而不敢继续使用的硬盘!要注意的是经过这块软件清空的硬盘数据基本上是不能被恢复的&#xff0c;所以操作前请一定要备份…

武林风云之linux组软raid0

小y可喜欢玩文明系列的游戏了&#xff0c;因为小y也一直喜欢造轮子&#xff0c;属于自己的轮子。 每次小y听到”要向雄鹰一样&#xff0c;定要遨游于天际。”感觉自己给自己打了一针强心剂&#xff0c;要求自己拼搏进取。 众所周知&#xff0c;文明是个原生的linux游戏&#xf…

Linux 系统 yum 安装 jdk1.8

1、首先检查是否存在jdk java -version上图这样就是系统没有找到已经安装的jdk 2.查看jdk版本列表 yum -y list java*执行此命令会显示所有版本 jdk 安装包 3、下载安装jdk 这里安装的是jdk1.8 yum install java-1.8.0-openjdk-devel.x86_64这里输入回车y继续安装 4、再次检…

学习Django从零开始之三

搭建虚拟python环境 搭建开发环境有多种方式&#xff0c;其中包括本地直接安装Python的可执行文件&#xff0c;使用virtualenv&#xff0c;以及使用Anaconda和Miniconda等工具。这些工具在创建Python虚拟环境方面各有特点。具体不同之处感兴趣的同学可以自行查阅相关资料。 简…

docker consul 容器的自动发现与注册

consul相关知识 什么是注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的&#xff0c;不保障高可用性&#xff0c;也不考虑服务的压力承载&#xff0c;服务之间调用单纯的通过接口访问。直到后来出现了多个节点的分布式架构&#xff0c;起初的…

大创项目推荐 深度学习 opencv python 实现中国交通标志识别

文章目录 0 前言1 yolov5实现中国交通标志检测2.算法原理2.1 算法简介2.2网络架构2.3 关键代码 3 数据集处理3.1 VOC格式介绍3.2 将中国交通标志检测数据集CCTSDB数据转换成VOC数据格式3.3 手动标注数据集 4 模型训练5 实现效果5.1 视频效果 6 最后 0 前言 &#x1f525; 优质…

通义千问 Qwen-72B-Chat在PAI-DSW的微调推理实践

01 引言 通义千问-72B&#xff08;Qwen-72B&#xff09;是阿里云研发的通义千问大模型系列的720亿参数规模模型。Qwen-72B的预训练数据类型多样、覆盖广泛&#xff0c;包括大量网络文本、专业书籍、代码等。Qwen-72B-Chat是在Qwen-72B的基础上&#xff0c;使用对齐机制打造的…

String类的hashCode()方法源码分析

Object类中的hashCode()方法&#xff1a; 同一个对象&#xff0c;hashCode必须相同&#xff1b;如果两个对象的equals相等&#xff0c;那么hashCode也必须要相等&#xff01;hashCode()方法是native本地方法&#xff0c;是C代码&#xff0c;hashCode的值&#xff0c;不一定是…

高级前端开发工程师

岗位需求 熟练掌握前端主流框架Vue、React、Angular,至少熟练掌控Vue全家桶 文章目录 岗位需求前言一、Vue框架二、React框架三、Angular框架四、什么是Vue全家桶前言 -那就看你表哥的电脑里有没有硬盘 -我不敲键盘 一、Vue框架 Vue(读音为/vjuː/,类似于"view"…

生产环境_Spark处理轨迹中跨越本初子午线的经度列

使用spark处理数据集&#xff0c;解决gis轨迹点在地图上跨本初子午线的问题&#xff0c;这个问题很复杂&#xff0c;先补充一版我写的 import org.apache.spark.{SparkConf, SparkContext} import org.apache.spark.sql.{Row, SparkSession} import org.apache.spark.sql.func…

Unity inspector绘制按钮与Editor下生成与销毁物体的方法 反射 协程 Editor

应美术要求&#xff0c;实现一个在编辑环境下&#xff0c;不运行&#xff0c;可以实例化预制体的脚本 效果如上图所示 1.去实现一个简单的 行、列实例化物体脚本 2.在Inspector下提供按钮 3.将方法暴露出来&#xff08;通过自定义标签实现&#xff09; 需求一 using System.C…

单片机Freertos入门(二)任务的创建、删除

1、串口配置 首先将串口进行配置&#xff0c;后续经常会应用&#xff0c;具体步骤点击&#xff1a;串口配置。 2、任务 创建一个任务&#xff0c;就是开辟一个空间、每个任务中都会有while&#xff08;1&#xff09;死循环。 2.1相关函数 动态创建&#xff1a;xTaskCreate…