nginx+Tomcat动静分离

news2024/11/19 23:39:05

本⽂的动静分离主要是通过nginx+tomcat来实现,其中nginx处理图⽚、html等静态的⽂ 件,tomcat处理jsp、do等动态⽂件.

实验环境

192.168.200.133 nginx反向代理

192.168.200.129 static

192.168.200.130 dynamic

步骤

修改三台主机名

[root@admin ~]# hostnamectl  hostname  nginx
[root@admin ~]# bash
[root@nginx ~]# 


[root@AI ~]# hostnamectl hostname static
[root@AI ~]# bash
[root@static ~]# 

[root@host1 ~]# hostnamectl  hostname dynamic
[root@host1 ~]# bash
[root@dynamic ~]# 

两台机器要安装nginx服务,先安装依赖包,dynamic安装tomcat服务

nginx反向代理机器

[root@nginx ~]# yum -y install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel
正在更新 Subscription Management 软件仓库。
无法读取客户身份

本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。

AppStream                                                                        3.1 MB/s | 3.2 kB     00:00    
安装过程省略 。 。 。 。 。 。    
[root@nginx ~]# wget https://nginx.org/download/nginx-1.24.0.tar.gz
--2024-04-30 10:19:55--  https://nginx.org/download/nginx-1.24.0.tar.gz
正在解析主机 nginx.org (nginx.org)... 52.58.199.22, 3.125.197.172, 2a05:d014:5c0:2600::6, ...
正在连接 nginx.org (nginx.org)|52.58.199.22|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:1112471 (1.1M) [application/octet-stream]
正在保存至: “nginx-1.24.0.tar.gz”

nginx-1.24.0.tar.gz          100%[===========================================>]   1.06M   483KB/s  用时 2.3s    

2024-04-30 10:19:58 (483 KB/s) - 已保存 “nginx-1.24.0.tar.gz” [1112471/1112471])

[root@nginx ~]# 
[root@nginx ~]# useradd  -s /sbin/nologin nginx
[root@nginx ~]# mkdir /www
[root@nginx ~]# systemctl  stop firewalld.service 
[root@nginx ~]# setenforce  0
[root@nginx ~]# tar xvf nginx-1.24.0.tar.gz 
#解压过程省略
[root@nginx ~]# cd nginx-1.24.0/
[root@nginx nginx-1.24.0]# ls
auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
[root@nginx nginx-1.24.0]# ./configure  --prefix=/www/ --user=nginx --group=nginx --with-http_ssl_module  --with-http_v2_module  --with-http_realip_module  --with-http_stub_status_module  --with-http_gzip_static_module --with-pcre  --with-stream  --with-stream_ssl_module  --with-stream_realip_module
#编译过程省略 
[root@nginx nginx-1.24.0]# make && make install 
[root@nginx nginx-1.24.0]cd
[root@nginx ~]# chown  -R nginx.nginx /www/
[root@nginx ~]# echo "PATH=${PATH}:/www/sbin" >> /etc/bashrc
[root@nginx ~]# source  /etc/bashrc 
[root@nginx ~]# cd /www/sbin/
[root@nginx sbin]# nginx
[root@nginx sbin]# ss -anltp | grep 80
LISTEN 0      511          0.0.0.0:80        0.0.0.0:*    users:(("nginx",pid=89712,fd=6),("nginx",pid=89711,fd=6))
[root@nginx sbin]# 

 static机器

[root@static ~]#  yum -y install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel
正在更新 Subscription Management 软件仓库。
无法读取客户身份

本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。

AppStream                                                                        179 MB/s | 6.3 MB     00:00    
BaseOS                                                                            88 MB/s | 1.7 MB     00:00    
软件包 gcc-11.4.1-2.1.el9.alma.x86_64 已安装。
软件包 gcc-c++-11.4.1-2.1.el9.alma.x86_64 已安装。
软件包 automake-1.16.2-8.el9.noarch 已安装。
软件包 pcre-8.44-3.el9.3.x86_64 已安装。
软件包 pcre-devel-8.44-3.el9.3.x86_64 已安装。
软件包 zlib-1.2.11-40.el9.x86_64 已安装。
软件包 zlib-devel-1.2.11-40.el9.x86_64 已安装。
软件包 openssl-1:3.0.7-24.el9.x86_64 已安装。
软件包 openssl-devel-1:3.0.7-24.el9.x86_64 已安装。
依赖关系解决。
无需任何处理。
完毕! 
[root@static ~]# wget https://nginx.org/download/nginx-1.24.0.tar.gz
--2024-04-30 10:44:20--  https://nginx.org/download/nginx-1.24.0.tar.gz
正在解析主机 nginx.org (nginx.org)... 3.125.197.172, 52.58.199.22, 2a05:d014:5c0:2601::6, ...
正在连接 nginx.org (nginx.org)|3.125.197.172|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:1112471 (1.1M) [application/octet-stream]
正在保存至: “nginx-1.24.0.tar.gz.2”

nginx-1.24.0.tar.gz.2        100%[===========================================>]   1.06M   407KB/s  用时 2.7s    

2024-04-30 10:44:24 (407 KB/s) - 已保存 “nginx-1.24.0.tar.gz.2” [1112471/1112471])

[root@static ~]# tar xvf nginx-1.24.0.tar.gz
#解压过程省略
[root@static ~]# useradd  -s /sbin/nologin  nginx
[root@static ~]# mkdir   /www
[root@static ~]# systemctl  stop  firewalld.service
[root@static ~]# setenforce  0
setenforce: SELinux is disabled
[root@static ~]# cd nginx-1.24.0/
[root@static nginx-1.24.0]# ls
auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  Makefile  man  objs  README  src
[root@static nginx-1.24.0]# ./configure  --prefix=/www/ --user=nginx --group=nginx --with-http_ssl_module  --with-http_v2_module  --with-http_realip_module  --with-http_stub_status_module  --with-http_gzip_static_module --with-pcre  --with-stream  --with-stream_ssl_module  --with-stream_realip_module
#编译过程省略
[root@static nginx-1.24.0]# make && make install
[root@static nginx-1.24.0]# cd
[root@static ~]# chown  -R nginx.nginx /www/
[root@static ~]# echo "PATH=${PATH}:/www/sbin" >> /etc/bashrc
[root@static ~]# source /etc/bashrc
[root@static ~]# cd /www/sbin/
[root@static sbin]# nginx
[root@static sbin]# ss -anltp | grep 80
LISTEN 0      511          0.0.0.0:80         0.0.0.0:*    users:(("nginx",pid=10358,fd=6),("nginx",pid=10357,fd=6))
[root@static sbin]# 

 

dynamic动态机器,安装tomcat前安装java环境

[root@dynamic ~]# yum -y install java
正在更新 Subscription Management 软件仓库。
无法读取客户身份

本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。

上次元数据过期检查:0:13:45 前,执行于 2024年04月30日 星期二 10时21分02秒。
依赖关系解决。
省略  。 。 。。 。 
[root@dynamic ~]# wget -c https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.100/bin/apache-tomcat-8.5.100.tar.gz
--2024-04-30 10:35:52--  https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.100/bin/apache-tomcat-8.5.100.tar.gz
正在解析主机 dlcdn.apache.org (dlcdn.apache.org)... 151.101.2.132, 2a04:4e42::644
正在连接 dlcdn.apache.org (dlcdn.apache.org)|151.101.2.132|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:10885192 (10M) [application/x-gzip]
正在保存至: “apache-tomcat-8.5.100.tar.gz”

apache-tomcat-8.5.100.tar.gz 100%[===========================================>]  10.38M   134KB/s  用时 56s     

2024-04-30 10:36:48 (190 KB/s) - 已保存 “apache-tomcat-8.5.100.tar.gz” [10885192/10885192])

[root@dynamic ~]# tar  -zxvf apache-tomcat-8.5.100.tar.gz
#解压过程省略 
[root@dynamic ~]# cp apache-tomcat-8.5.100 /usr/local/tomcat -r
[root@dynamic ~]# cd /usr/local/tomcat/
[root@dynamic tomcat]# ls
bin           conf             lib      logs    README.md      RUNNING.txt  webapps
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  RELEASE-NOTES  temp         work
[root@dynamic tomcat]# cd
[root@dynamic ~]# useradd  -s /sbin/nologin tomcat
[root@dynamic ~]# chown -R tomcat:tomcat /usr/local/tomcat/
[root@dynamic ~]# chmod -R 755  /usr/local/tomcat/
[root@dynamic ~]# /usr/local/tomcat/bin/catalina.sh  start
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
[root@dynamic ~]# ss -antlp
State    Recv-Q   Send-Q          Local Address:Port     Peer Address:Port   Process                             
LISTEN   0        128                 127.0.0.1:631           0.0.0.0:*       users:(("cupsd",pid=1067,fd=7))    
LISTEN   0        128                   0.0.0.0:22            0.0.0.0:*       users:(("sshd",pid=1069,fd=3))     
LISTEN   0        128                     [::1]:631              [::]:*       users:(("cupsd",pid=1067,fd=6))    
LISTEN   0        1          [::ffff:127.0.0.1]:8005                *:*       users:(("java",pid=35905,fd=50))   
LISTEN   0        128                      [::]:22               [::]:*       users:(("sshd",pid=1069,fd=4))     
LISTEN   0        100                         *:8080                *:*       users:(("java",pid=35905,fd=40))   
[root@dynamic ~]# 
[root@dynamic ~]# systemctl  stop firewalld.service 
[root@dynamic ~]# setenforce  0
[root@dynamic ~]# 

 

修改tomcat测试页面

[root@dynamic ~]# vim /usr/local/tomcat/webapps/ROOT/index.jsp 
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
    <head>
           <title>第一个 JSP 程序</title>
           <meta charset="UTF-8">
    </head>
    <body>
           <%
                  out.println("Hello 这是一个tomcat测试页");
           %>
    </body>
</html>

 配置nginx反向代理分配动静态分离

 [root@nginx ~]# vim /www/conf/nginx.conf
 17 http {
 18     include       mime.types;
 19     default_type  application/octet-stream;
 20     upstream static {
 21         server 192.168.200.129;
 22      }
 23     upstream dynamic {
 24         server 192.168.200.130:8080;
 25      }
 
 40     server {
 41         listen       80;
 42         server_name  localhost;
 43 
 44         #charset koi8-r;
 45 
 46         #access_log  logs/host.access.log  main;
 47 
 48         location / {
 49          proxy_pass http://static;
 50         }
 51 
 52         location  ~* \.jsp$ {            //以jsp结尾的转发到动态服务器上
 53          proxy_pass http://dynamic;
 54          proxy_set_header Host $host;  //请求头中的Host字段
 55          proxy_set_header X-Real-IP $remote_addr;  //包含了发起请求的客户端的IP地址
 56         }
 [root@nginx ~]# /www/sbin/nginx  -s reload

 修改static机器的网页内容以示区分

[root@static html]# vim index.html 
<html>
        <head>
                <title>1223</title>
        </head>
        <body>sadksjhd </body>
</html>                                                                                       

 浏览器访问

#静态

 #动态

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

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

相关文章

《Redis使用手册之列表》

《Redis使用手册之列表》 目录 **《Redis使用手册之列表》****LPUSH&#xff1a;将元素推入列表左端****LPUSHX、RPUSHX&#xff1a;只对已存在的列表执行推入操作****LPOP&#xff1a;弹出列表最左端的元素****RPOP&#xff1a;弹出列表最右端的元素****RPOPLPUSH&#xff1a;…

【C语言刷题系列】删除公共元素

目录 一、问题描述 二、解题思路 三、源代码实现 解决方案一&#xff1a;拷贝到临时数组 解决方案二&#xff1a;直接打印 个人主页&#xff1a; 倔强的石头的博客 系列专栏 &#xff1a;C语言指南 C语言刷题系列 一、问题描述 二、解题思路 第一种方法&…

线上告警炸锅!FastJson 又立功了。。

前段时间新增一个特别简单的功能&#xff0c;晚上上线前review代码时想到公司拼搏进取的价值观临时加一行log日志&#xff0c;觉得就一行简单的日志基本上没啥问题&#xff0c;结果刚上完线后一堆报警&#xff0c;赶紧回滚了代码&#xff0c;找到问题删除了添加日志的代码&…

3.C++动态内存管理(超全)

目录 1 .C/C 内存分布 2. C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free 3. C内存管理方式 3.1 new/delete操作内置类型 3.2 new和delete操作自定义类型 3.3 operator new函数 3.4 定位new表达式(placement-new) &#xff08;了解&#xff09; 4. 常…

iA Writer for Mac:简洁强大的写作软件

在追求高效写作的今天&#xff0c;iA Writer for Mac凭借其简洁而强大的功能&#xff0c;成为了许多作家、记者和学生的首选工具。这款专为Mac用户打造的写作软件&#xff0c;以其独特的设计理念和实用功能&#xff0c;助你轻松打造高质量的文章。 iA Writer for Mac v7.1.2中文…

C语言(操作符)1

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸各位能阅读我的文章&#xff0c;诚请评论指点&#xff0c;关注收藏&#xff0c;欢迎欢迎~~ &#x1f4a5;个人主页&#xff1a;小羊在奋斗 &#x1f4a5;所属专栏&#xff1a;C语言 本系列文章为个人学习笔记&#x…

vue2迁移到vue3,v-model的调整

项目从vue2迁移到vue3&#xff0c;v-model不能再使用了&#xff0c;需要如何调整&#xff1f; 下面只提示变化最小的迁移&#xff0c;不赘述vue2和vue3中的常规写法。 vue2迁移到vue3&#xff0c;往往不想去调整之前的代码&#xff0c;以下就使用改动较小的方案进行调整。 I…

Java并发编程面试问题与答案

1. 什么是线程安全&#xff1f; 答&#xff1a; 线程安全意味着多个线程可以同时访问一个类的实例而不引起任何问题或不一致的结果。线程安全的代码会通过同步机制来确保所有线程都能正确地访问共享资源。 2. 解释Java中的synchronized关键字。 答&#xff1a; synchronized…

Q1营收稳健增长,云从科技如何在“百模大战”的险中求稳?

自从迈入大模型时代&#xff0c;AI行业可谓“一天一个样”。越来越多的企业涌现&#xff0c;舆论热议从未断绝。 但就像所有技术必须经历的那些考验&#xff0c;在现实尺度下&#xff0c;AI顺利走进商业化世界&#xff0c;仍然是少部分玩家掌握的稀缺能力。个中原因不尽相同&a…

解决“未能正确加载QtVsToolPackage包“问题

今天&#xff0c;在使用VS2019Qt插件时&#xff0c;弹出"未能正确加载QtVsToolPackage包"错误&#xff0c;如图(1.1)所示&#xff1a; 图(1.1) 报"未能正确加载QtVsToolsPackage包"错误 出现这种现象的原因是: qt-vsaddin升级失败或者版本不兼容&#xff0…

动手学深度学习3.6 softmax回归的从零开始实现-笔记练习(PyTorch)

以下内容为结合李沐老师的课程和教材补充的学习笔记&#xff0c;以及对课后练习的一些思考&#xff0c;自留回顾&#xff0c;也供同学之人交流参考。 本节课程地址&#xff1a;Softmax 回归从零开始实现_哔哩哔哩_bilibili 本节教材地址&#xff1a;3.6. softmax回归的从零开…

物联网实战--平台篇之(二)基础搭建

目录 一、Qt工程创建 二、数据库知识 三、通信协议 四、名词定义 本项目的交流QQ群:701889554 物联网实战--入门篇https://blog.csdn.net/ypp240124016/category_12609773.html 物联网实战--驱动篇https://blog.csdn.net/ypp240124016/category_12631333.html 一、Qt工程…

GoLang Gin实际使用

所有代码同步到Admin/gitDemo - Gitee.comhttps://gitee.com/mec-deployment-team_0/git-demo/tree/dev/ 1.创建Gin框架 一般设计一个常规的web项目&#xff0c;都需要以下几个模块 runApp 主函数&#xff0c;运行整个项目routes 路由控制&#xff0c;管理跳转以及路由分组co…

kubectl_入门_Pod调整

Pod调度 在默认情况下&#xff0c;一个pod在哪个node节点上运行&#xff0c;是由scheduler组件采用相应的算法计算出来的&#xff0c;这个过程是不受人工控制的。 但是在实际过程中&#xff0c;这并不满足需求&#xff0c;因为很多情况下&#xff0c;我们想控制某些pod到达某…

基于昇腾AI | 英码科技EA500I使用AscendCL实现垃圾分类和视频物体分类应用

现如今&#xff0c;人工智能迅猛发展&#xff0c;AI赋能产业发展的速度正在加快&#xff0c;“AI”的需求蜂拥而来&#xff0c;但AI应用快速落地的过程中仍存在很大的挑战&#xff1a;向下需要适配的硬件&#xff0c;向上需要完善的技术支持&#xff0c;两者缺一不可。 基于此&…

【C语言】深入了解文件:简明指南

&#x1f308;个人主页&#xff1a;是店小二呀 &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &#x1f308;C笔记专栏&#xff1a; C笔记 &#x1f308;喜欢的诗句:无人扶我青云志 我自踏雪至山巅 文章目录 一、文件的概念1.1 文件名:1.2 程序文件和数据文件 二、数据文…

香港上市现货比特币及以太坊ETF,首日交易量不及预期

原创 | 刘教链 在BTC&#xff08;比特币&#xff09;继续回调至61k一线&#xff0c;眼见就要在连续7个月收涨后&#xff0c;终于迎来一个收跌的4月之际&#xff0c;香港如期上市了现货比特币ETF和以太坊ETF&#xff0c;成为全球继美国推出现货比特币ETF之后&#xff0c;亚洲首个…

Aker(安碁科技)晶振产品应用和选型

一、石英晶体振荡器简介 在电子电路系统中&#xff0c;特定的动作需要严格按照一定的顺序进行&#xff0c;以确保数据被正确处理和操作&#xff0c;时钟信号就成了系统工作的重要引导者。而且在多模块复杂电路系统中&#xff0c;为了确保不同功能模块能协调一致地工作&#xf…

网络安全是智能汽车下一个要卷的方向?

2024年一季度&#xff0c;中国汽车市场延续了2023年的风格&#xff0c;核心就是「卷」。 2023年&#xff0c;我国汽车市场爆发「最强价格战」&#xff0c;燃油车的市场空间不断被挤压&#xff0c;如今只剩下最后一口气。近日乘联会发布4月1-14日最新数据&#xff0c;新能源&am…

ARM功耗管理背景及挑战

安全之安全(security)博客目录导读