【NGINX】 -9 nginx + tomcat实现的多级反向代理

文章目录

  • 1、tomcat的安装 (centos版本)
    • 1.1 安装Java依赖环境
    • 1.2 安装tomcat
  • 2、tomcat的虚拟主机的配置
    • 2.1 配置多级目录
  • 3、利用nginx的反向代理实现将转发指向一个虚拟机
    • 3.1 nginx服务器的配置
    • 3.2 客户端配置
  • 4、 反向多级代理
    • 代理服务器操作
    • nginx 1 服务器
    • nginx 2 服务器
    • tomcat 1 服务器
    • tomcat 2 服务器
    • 结果展示


1、tomcat的安装 (centos版本)

1.1 安装Java依赖环境

[root@localhost ~]# rz -E
rz waiting to receive.
[root@localhost ~]# ls
anaconda-ks.cfg       jdk-8u201-linux-x64.rpm  模板  图片  下载  桌面
initial-setup-ks.cfg  公共                     视频  文档  音乐
[root@localhost ~]# rpm -ivh jdk-8u201-linux-x64.rpm #安装成功
[root@localhost ~]# cd /usr/java/
[root@localhost java]# ls
default  jdk1.8.0_201-amd64  latest
[root@localhost java]# #添加环境变量
[root@localhost java]# 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
##
[root@localhost java]# source /etc/profile
[root@localhost java]# java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
#添加成功
[root@localhost java]# 

1.2 安装tomcat

具体操作步骤如下

[root@localhost opt]# rz -E
rz waiting to receive.
#拖入相关安装包
[root@localhost opt]# ls
apache-tomcat-9.0.16.tar.gz  rh
[root@localhost opt]# tar -xf apache-tomcat-9.0.16.tar.gz 
#解压
[root@localhost opt]# ls
apache-tomcat-9.0.16  apache-tomcat-9.0.16.tar.gz  rh
[root@localhost opt]# cp -r apache-tomcat-9.0.16 /usr/local/tomcat
#复制到系统路径
[root@localhost opt]# cd /usr/local/tomcat/
[root@localhost tomcat]# ls
bin           conf             lib      logs    README.md      RUNNING.txt  webapps
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  RELEASE-NOTES  temp         work
[root@localhost tomcat]# cd bin/
[root@localhost bin]# ls
bootstrap.jar       commons-daemon-native.tar.gz  makebase.sh       tomcat-juli.jar
catalina.bat        configtest.bat                setclasspath.bat  tomcat-native.tar.gz
catalina.sh         configtest.sh                 setclasspath.sh   tool-wrapper.bat
catalina-tasks.xml  daemon.sh                     shutdown.bat      tool-wrapper.sh
ciphers.bat         digest.bat                    shutdown.sh       version.bat
ciphers.sh          digest.sh                     startup.bat       version.sh
commons-daemon.jar  makebase.bat                  startup.sh[root@localhost bin]# /usr/local/tomcat/bin/startup.sh 
#以catlina的方式启动
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost bin]# /usr/local/tomcat/bin/shutdown.sh 
#以catlina的方式关闭
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@localhost bin]# #创建tomcat用户,更改其属组
[root@localhost bin]# useradd -s /sbin/nologin tomcat
[root@localhost bin]# chown -R tomcat:tomcat /usr/local/tomcat
[root@localhost bin]# #配置service文件,可以使用systemctl托管
[root@localhost system]# vim tomcat.service 
[root@localhost system]# systemctl daemon-reload 
[root@localhost system]# systemctl restart tomcat
[root@localhost system]# systemctl status tomcat
#service文件配置
[Unit]
Description=Tomcat
After=syslog.target network.target[Service]
Type=forking
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
RestartSec=3
PrivateTmp=true
User=tomcat
Group=tomcat[Install]
WantedBy=multi-user.target#配置软链接
[root@localhost system]# ln -s /usr/local/tomcat/bin/*     /usr/bin

安装完成

在这里插入图片描述

2、tomcat的虚拟主机的配置

2.1 配置多级目录

[root@localhost data]# echo "abc" > abc/ROOT/index.html
[root@localhost data]# echo "def" > def/ROOT/index.html
[root@localhost data]# echo "xyz" > xyz/ROOT/index.html
[root@localhost data]# tree
.
├── abc
│?? └── ROOT??     └── index.html
├── def
│?? └── ROOT??     └── index.html
└── xyz└── ROOT└── index.html#找到主站点配置目录
[root@localhost data]# cd /usr/local/tomcat/
[root@localhost tomcat]# ls
bin           conf             lib      logs    README.md      RUNNING.txt  webapps
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  RELEASE-NOTES  temp         work
[root@localhost tomcat]# cd conf/
[root@localhost conf]# ls
Catalina             context.xml           logging.properties  tomcat-users.xsd
catalina.policy      jaspic-providers.xml  server.xml          web.xml
catalina.properties  jaspic-providers.xsd  tomcat-users.xml
[root@localhost conf]# vim server.xml 
[root@localhost conf]# #添加三个站点目录<Host name="www.abc.com"  appBase="/data/abc" unpackWARs="true" autoDeploy="true"></Host><Host name="www.def.com"  appBase="/data/def" unpackWARs="true" autoDeploy="true"></Host><Host name="www.xyz.com"  appBase="/data/xyz" unpackWARs="true" autoDeploy="true"></Host>#测试访问虚拟主机 -- 成功
[root@localhost data]# curl www.abc.com:8080
abc
[root@localhost data]# curl www.def.com:8080
def
[root@localhost data]# curl www.xyz.com:8080
xyz

3、利用nginx的反向代理实现将转发指向一个虚拟机

在这里插入图片描述

机器IP地址
pc192.168.107.192
nginx192.168.107.10
tomcat192.168.107.12

3.1 nginx服务器的配置

#安装nginx()
[root@localhost ~]# vim /etc/nginx/nginx.conf
#加入下面这三行(server模块)
location / {proxy_pass  http://www.def.com:8080/;}vim /etc/hosts
192.168.107.12  www.abc.com  www.def.com  www.xyz.com

3.2 客户端配置


vim /etc/hosts
192.168.107.10  www.abc.com  www.def.com   www.xyz.com#检测访问[root@localhost ~]# curl 192.168.107.10
abc
[root@localhost ~]# curl 192.168.107.10
abc
[root@localhost ~]# curl 192.168.107.10
abc
[root@localhost ~]# curl 192.168.107.10
abc
[root@localhost ~]# curl 192.168.107.10
abc
[root@localhost ~]# curl 192.168.107.10
abc
[root@localhost ~]# curl 192.168.107.10
def
[root@localhost ~]# curl 192.168.107.10
def
[root@localhost ~]# curl 192.168.107.10
def
[root@localhost ~]# curl 192.168.107.10
def
[root@localhost ~]# curl 192.168.107.10
def
[root@localhost ~]# curl 192.168.107.10
def
#成功

4、 反向多级代理

拓扑图如下
在这里插入图片描述

代理服务器操作

yum install  nginx -y
systemctl  start  nginx
vim  /etc/nginx/nginx.confupstream  web {server 192.168.91.101;server 192.168.91.102;}location  / {proxy_pass  http://web/;}nginx  -s reload

nginx 1 服务器

yum install  nginx -y
systemctl  start  nginxvim  /etc/nginx/nginx.conflocation ~  \.(jpg|html|png|css)$ {root         /usr/share/nginx/html;}location ~  \.jsp$ {proxy_pass http://192.168.91.103:8080;}echo  7-2  > /usr/share/nginx/html/index.html

nginx 2 服务器

yum install  nginx -y
systemctl  start  nginxvim  /etc/nginx/nginx.conflocation ~  \.(jpg|html|png|css)$ {root         /usr/share/nginx/html;}location ~  \.jsp$ {proxy_pass http://192.168.91.105:8080;}echo  7-3  > /usr/share/nginx/html/index.html

tomcat 1 服务器

安装tomcatecho 7-4  > /usr/local/tomcat/webapps/ROOT/test.jsp

tomcat 2 服务器

安装tomcatecho 7-5  > /usr/local/tomcat/webapps/ROOT/test.jp

结果展示

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

基于requests_html的python爬虫

前言&#xff1a;今天介绍一个相对性能更高的爬虫库requests_html&#xff0c;会不会感觉和requests有点联系&#xff1f;是的。为什么开始不直接介绍呢&#xff1f;因为我觉得requests是最基本入门的东西&#xff0c;并且在学习过程中也能学到很多东西。我的python老师在介绍这…

【架构篇】架构类型解释

架构设计的本质&#xff1a;从模糊概念到系统化思维 摘要 “架构”是系统设计的灵魂&#xff0c;但许多人对它的理解仍停留在抽象层面。本文系统解析架构的8大核心维度&#xff0c;结合设计原则、案例与误区分析&#xff0c;帮助开发者建立从战略到落地的完整认知框架。 一、架…

用Python绘制梦幻星空

用Python绘制梦幻星空 在这篇教程中&#xff0c;我们将学习如何使用Python创建一个美丽的星空场景。我们将使用Python的图形库Pygame和随机库来创建闪烁的星星、流星和月亮&#xff0c;打造一个动态的夜空效果。 项目概述 我们将实现以下功能&#xff1a; 创建深蓝色的夜…

PyTorch循环神经网络(Pytotch)

文章目录 循环神经网络&#xff08;RNN&#xff09;简单的循环神经网络长短期记忆网络&#xff08;LSTM&#xff09;门控循环单元&#xff08;GRU&#xff09; 循环神经网络&#xff08;RNN&#xff09; 循环神经网络&#xff08;RecurrentNeuralNetwork&#xff0c;RNN&#…

用算术右移实现逻辑右移及用逻辑右移实现算术右移

函数srl()用算术右移实现逻辑右移&#xff0c;函数sra()用逻辑右移实现算术右移。 程序代码 int sra(int x,int k); unsigned int srl(unsigned int x, int k);void main() {int rx1,k,x1;unsigned int rx2,x2;k3;x10x8777;x20x8777;rx1sra(x1, k);rx2srl(x2, k);while(1); }…

pojo层、dao层、service层、controller层的作用

在Java Web开发中&#xff0c;常见的分层架构&#xff08;如Spring Boot项目&#xff09;通常包含POJO层、DAO层、Service层和Controller层&#xff0c;各层职责明确&#xff0c;协同工作。以下是各层的作用及相互关系&#xff1a; 1. POJO层&#xff08;Model/Entity层&#…

【Linux网络】五种IO模型与阻塞IO

IO 在Linux网络环境里&#xff0c;IO&#xff08;Input/Output&#xff09;指的是网络数据在系统与外部网络&#xff08;像其他设备、服务器或者客户端&#xff09;之间进行传输的过程。 它是网络编程和系统性能优化的核心内容。 IO &#xff1a;INPUT和OUTPUT&#xff08;站…

入门OpenTelemetry——应用自动埋点

埋点 什么是埋点 埋点&#xff0c;本质就是在你的应用程序里&#xff0c;在重要位置插入采集代码&#xff0c;比如&#xff1a; 收集请求开始和结束的时间收集数据库查询时间收集函数调用链路信息收集异常信息 这些埋点数据&#xff08;Trace、Metrics、Logs&#xff09;被…

大数据场景下数据导出的架构演进与EasyExcel实战方案

一、引言&#xff1a;数据导出的演进驱动力 在数字化时代&#xff0c;数据导出功能已成为企业数据服务的基础能力。随着数据规模从GB级向TB级甚至PB级发展&#xff0c;传统导出方案面临三大核心挑战&#xff1a; ‌数据规模爆炸‌&#xff1a;单次导出数据量从万级到亿级的增长…

拓展运算符与数组解构赋值的区别

拓展运算符与数组解构赋值是ES6中用于处理数组的两种不同的特性&#xff0c;它们有以下区别&#xff1a; 概念与作用 • 拓展运算符&#xff1a;主要用于将数组展开成一系列独立的元素&#xff0c;或者将多个数组合并为一个数组&#xff0c;以及在函数调用时将数组作为可变参…

2025年全国青少年信息素养大赛初赛真题(算法创意实践挑战赛C++初中组:文末附答案)

2025年全国青少年信息素养大赛初赛真题(算法创意实践挑战赛C++初中组:文末附答案) 一、单项选择题(每题 5 分) C++ 程序流程控制的基本结构不包括以下哪项? A. 分支结构 B. 数据结构 C. 循环结构 D. 顺序结构 以下哪段代码能将数组 int a[4] = {2, 4, 6, 8}; 的所有元素变…

计算机视觉与深度学习 | Python实现EMD-CNN-LSTM时间序列预测(完整源码、数据、公式)

EMD-CNN-LSTM 1. 环境准备2. 数据生成(示例数据)3. EMD分解4. 数据预处理5. CNN-LSTM模型定义6. 模型训练7. 预测与重构8. 性能评估核心公式说明1. 经验模态分解(EMD)2. CNN-LSTM混合模型参数调优建议扩展方向典型输出示例以下是使用Python实现EMD-CNN-LSTM时间序列预测的完…

React 19中useContext不需要Provider了。

文章目录 前言一、React 19中useContext移除了Provider&#xff1f;二、使用步骤总结 前言 在 React 19 中&#xff0c;useContext 的使用方式有所更新。开发者现在可以直接使用 作为提供者&#xff0c;而不再需要使用 <Context.Provider>。这一变化简化了代码结构&…

单片机-STM32部分:14、SPI

飞书文档https://x509p6c8to.feishu.cn/wiki/VYYnwOc9Zi6ibFk36lYcPQdRnlf 什么是SPI SPI 是英语Serial Peripheral interface的缩写&#xff0c;顾名思义就是串行外围设备接口。是Motorola(摩托罗拉)首先在其MC68HCXX系列处理器上定义的。 SPI&#xff0c;是一种高速的&…

Vue 3 动态 ref 的使用方式(表格)

一、问题描述 先给大家简单介绍一下问题背景。我正在开发的项目中&#xff0c;有一个表格组件&#xff0c;其中一列是分镜描述&#xff0c;需要支持视频上传功能。用户可以为每一行的分镜描述上传对应的视频示例。然而&#xff0c;在实现过程中&#xff0c;出现了一个严重的问…

构建 TypoView:一个富文本样式预览工具的全流程记录

我正在参加CodeBuddy「首席试玩官」内容创作大赛&#xff0c;本文所使用的 CodeBuddy 免费下载链接&#xff1a;腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 在一次和 CodeBuddy 的日常交流中&#xff0c;我提出了一个构想&#xff1a;能不能帮我从零构建一个富文本样式…

AI:OpenAI论坛分享—《AI重塑未来:技术、经济与战略》

AI&#xff1a;OpenAI论坛分享—《AI重塑未来&#xff1a;技术、经济与战略》 导读&#xff1a;2025年4月24日&#xff0c;OpenAI论坛全面探讨了 AI 的发展趋势、技术范式、地缘政治影响以及对经济和社会的广泛影响。强调了 AI 的通用性、可扩展性和高级推理能力&#xff0c;以…

Bash fork 炸弹 —— :(){ :|: };:

&#x1f9e0; 什么是 Fork 炸弹&#xff1f; Fork 炸弹是一种拒绝服务&#xff08;DoS&#xff09;攻击技术&#xff0c;利用操作系统的 fork() 系统调用不断创建新进程&#xff0c;直到系统资源&#xff08;如进程表、CPU、内存&#xff09;被耗尽&#xff0c;从而使系统无法…

<前端小白> 前端网页知识点总结

HTML 标签 1. 标题标签 h1到h6 2. 段落标签 p 3. 换行 br 水平线 hr 4. 加粗 strong 倾斜 em 下划线 ins 删除 del 5. 图像标签 img src-图像的位置 alt- 图片加载失败显示的文字 替换文本 title--- 鼠标放到图片上显示的文字 提示…

tomcat查看状态页及调优信息

准备工作 先准备一台已经安装好tomcat的虚拟机&#xff0c;tomcat默认是状态页是默认被禁用的 1.添加授权用户 vim /usr/local/tomcat/conf/tomcat-users.xml22 <role rolename"manager-gui"/>23 <user username"admin" password"tomcat&q…