LNMT与动静分离

简介: LNMT(Linux + Nginx + MySQL + Tomcat)是一种常见的Web应用架构,它由Linux操作系统作为基础,使用Nginx作为反向代理服务器和静态资源服务器,MySQL作为数据库,Tomcat作为应用服务器。

前言

LNMT(Linux + Nginx + MySQL + Tomcat)是一种常见的Web应用架构,它由Linux操作系统作为基础,使用Nginx作为反向代理服务器和静态资源服务器,MySQL作为数据库,Tomcat作为应用服务器。


动静分离是一种优化Web应用性能的策略,它将动态内容和静态内容分别处理和分发。在LNMT架构中,Nginx起到了动静分离的作用。


具体而言,Nginx通过配置来区分处理动态请求和静态请求。对于静态请求(如HTML、CSS、JavaScript、图片等),Nginx可以直接处理并返回给客户端,而无需将请求转发给Tomcat应用服务器。这样可以减轻Tomcat的负载压力,并提高静态资源的访问速度。


对于动态请求(如Servlet、JSP等),Nginx会将请求转发给后端的Tomcat应用服务器进行处理,并将处理结果返回给客户端。Nginx作为反向代理服务器可以根据请求的URL或其他规则进行请求的负载均衡,将请求分发给多个Tomcat实例,以实现高可用和提高并发处理能力。


动静分离可以提高Web应用的性能和扩展性,通过将静态资源由Nginx直接提供,可以减轻后端应用服务器的负载,提高响应速度,节省服务器资源。同时,通过Nginx的负载均衡机制,可以将请求分发到多个应用服务器,提高系统的稳定性和可靠性。


一、简要思路


LNMT

   部署tomcat

       单机部署

           分别安装两个tomcat

           在第二个tomcat中修改配置文件server.xmll,所有端口号都更改

   部署nginx

   

yum install -y epel-release
        yum install -y nginx

   部署Mariadb

 

yum install mariadb-server

   配置Nginx

       实现反向代理

二、NGINX的配置参考


1、location

=  精确匹配

^~ 不用正则的字符串匹配

~ 正则匹配,且区分大小写

~*  不区分大小写的正则匹配

/  任意匹配,无论如何都会满足匹配条件,后面不能有任意字符串


2、rewirte

2.1应用场景:


进行前端的反向代理

新旧域名的更替

防盗链


2,2书写位置

   server

   location

   if条件

   若要匹配后就停止向下匹配,加入break关键字


2.3重写条目写法

   rewirte  “^表达式” 重写路径(可以是本地的访问目录,也可以是远程的URL)


2.4返回状态码: permanent,304 ;redirect,302


2.5示例


location / {
                root html;
                index index.html index.php;
                if ($host = "www.jx.com"){
                        rewrite  ^/(.*)$  http://192.168.115.131/$1 permanent;
                }

三、动静分离配置(单机配置)


本机地址192.168.115.131


1、Tomcat配置

1.1、安装Tomcat网址Apache Tomcat® - Welcome!

####解压
tar -xf apache-tomcat-8.5.16.tar.gz
###将解压后的包放入/usr
mv apache-tomcat-8.5.16 /usr/local/tomcat
###建立软联建
ln -s /usr/local/tomcat/bin/shutdown.sh /usr/bin/cat1down ##停止
ln -s /usr/local/tomcat/bin/startup.sh /usr/bin/cat1up    ##启动
######做完这些准备配置第二台Tomcat
cd /usr/local
cp tomcat tomcat2
######建立Tomcat2的软连接
ln -s /usr/local/tomcat2/bin/shutdown.sh /usr/bin/cat2down ##停止
ln -s /usr/local/tomcat2/bin/startup.sh /usr/bin/cat2up    ##启动
###修改Tomcat2的配置文件修改端口,避免冲突
vim /usr/local/tomcat2/conf/tomcat-users.xml
###分别写入
echo 192.168.115.131:8080 > /usr/local/tomcat/webapps/ROOT/index.jsp
echo 192.168.115.131:8081 > /usr/local/tomcat2/webapps/ROOT/index.jsp
###启动所有Tomcat
cat1up 
cat2up
2、配置NGINX
##安装NGINX
yum -y install epel-release.noarch
yum -y install nginx
##修改配置文件
vim /etc/nginx/nginx.conf
##在server字段插入
upstream tomcat {
                server 192.168.115.131:8080;
                server 192.168.115.131:8081;
        }
##在http字段插入
location ~ \.jsp$ {                                ####这里是jsp
                proxy_pass http://tomcat;
                proxy_set_header  Host $host;
        }
        location / {
                root    /usr/share/nginx/html;
                index   index.html;
        }
##退出保存,重启NGINX服务
3、安装mariadb
1. ##此实验暂时用不到数据库
2. yum -y install mariadb mariadb-server
4、测试

这是NGINX

Tomcat8080
Tomcat8081

其实这里我没有去换我们的端口,只是访问了Tomcat的动态页面,说明静态页面找NGINX,动态的找Tomcat。这里刷新就会在8081/8082端口来回切换,这里体现了NGINX的负载均衡。

访问不存在的页面

下面,我们可以在NGINX的配置文件中进行设置可以访问jpg,然后将2张图片放入/usr/local/tomcat/webapps/ROOT并且改名为index.jpg

###修改NGINX的配置文件
vim /etc/nginx/nginx.conf
###修改server字段
 location ~ \.(jsp|jpg)$ {                        ###添加jpg格式
                proxy_pass http://tomcat;
                proxy_set_header  Host $host;
        }
        location / {
                root    /usr/share/nginx/html;
                index   index.html;
        }
##保存退出并重启NGINX

访问刚才不存在的页面,并ctrl+F5深度刷新,他会在8080/8081来回访问。

目录
相关文章
|
7月前
|
JSON API 数据格式
关键词搜索爱回收商品列表API接口(爱回收API系列)
爱回收作为二手电子产品交易平台,提供丰富的商品资源。其API接口允许开发者通过关键词搜索商品列表,获取商品名称、类别、品牌、预估回收价格等信息,支持分页展示和自定义每页数量。接口采用HTTP GET请求,响应格式为JSON。以下是Python示例代码,展示如何使用该接口进行搜索。
|
域名解析 弹性计算 监控
用阿里云服务器搭建论坛教程
```markdown 1. 购买阿里云ECS实例 2. 配置域名解析至服务器IP 3. 安装Nginx/Apache,部署论坛文件 4. 安装MySQL,创建数据库和用户 5. 选择论坛程序(如Discuz!),完成安装配置 6. 自定义论坛参数,设置功能 7. 可选:启用SSL证书增强安全性 8. 定期备份数据,监控服务器性能 确保更新维护,顺利搭建安全论坛!求助阿里云客服或文档以获取支持。 ```
356 0
|
监控 调度 数据库
简化任务调度与管理:详解XXL-Job及Docker Compose安装
在现代应用程序开发中,任务调度和管理是至关重要的一部分。XXL-Job是一个强大的分布式任务调度平台,它使得任务的调度和管理变得更加轻松和高效。本文将介绍XXL-Job的基本概念,并详细演示如何使用Docker Compose进行快速安装和配置。
874 1
简化任务调度与管理:详解XXL-Job及Docker Compose安装
|
安全 编译器 C++
C++一分钟之-模板元编程实例:类型 traits
【7月更文挑战第15天】C++的模板元编程利用编译时计算提升性能,类型traits是其中的关键,用于查询和修改类型信息。文章探讨了如何使用和避免过度复杂化、误用模板特化及依赖特定编译器的问题。示例展示了`is_same`类型trait的实现,用于检查类型相等。通过`add_pointer`和`remove_reference`等traits,可以构建更复杂的类型转换逻辑。类型traits增强了代码效率和安全性,是深入C++编程的必备工具。
195 12
|
NoSQL 关系型数据库 MySQL
mysql与redis在java开发过程中的数据一致性问题
mysql与redis在java开发过程中的数据一致性问题
235 4
|
Ubuntu Linux iOS开发
操作系统下载网址汇总
【8月更文挑战第31天】以下是常见操作系统的官方及可靠下载源简介: - **Windows**:可通过“MSDN我告诉你”(<https://msdn.itellyou.cn/>)和“Techbench by WZT”(<https://techbenchbywzt.com/>)下载各版本镜像。
1019 1
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的民宿预订管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的民宿预订管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
178 0
|
分布式计算 Hadoop Java
【Big Data】Hadoop--MapReduce经典题型实战(单词统计+成绩排序+文档倒插序列)
🍊本文使用了3个经典案例进行MapReduce实战🍊参考官方源码,代码风格较优雅🍊解析详细。
1174 0
|
传感器 机器学习/深度学习 人工智能
盘一盘 | 基于BEV空间的视觉感知算法模型梳理(自下而上&自上而下)(下)
激光雷达传感器可以提供物体准确的深度信息以及结构信息;但激光雷达传感器提供物体信息的距离比较有限,同时其获得的点云数据与相机传感器采集到的图像信息相比更加稀疏;
盘一盘 | 基于BEV空间的视觉感知算法模型梳理(自下而上&自上而下)(下)
|
Kubernetes 网络协议 安全
NFS(Network File System) 服务安装部署配置
NFS(Network File System)是一种网络文件系统,主要具有以下特点: - 允许网络中的计算机之间通过TCP/IP网络共享文件。 - 可以透明地让不同操作系统的机器访问同一个文件系统。 - 用户可以像访问本地文件一样访问远程NFS服务器上的文件。 - NFS主要由两个组件构成:NFS服务器端与NFS客户端。 - 服务器端负责共享文件系统、控制权限,客户端负责访问服务器端的资源。 - 主要协议是NFSv3和NFSv4,基于RPC工作。 - 支持不同客户端并发访问、文件锁、权限控制等。 - 性能稳定,通常用于数据共享。
619 0