Tomcat和Nginx笔记

本文详细介绍了Tomcat作为轻量级的JSP应用服务器的特点,以及它与Nginx的区别,包括Nginx的高性能反向代理和负载均衡功能,以及动静分离的实现方法。还提供了在IntelliJIDEA中配置Tomcat的基本步骤。
摘要由CSDN通过智能技术生成

Tomcat和Nginx

1.Tomcat

1.1 简介

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,

在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

Tomcat 这个名字的来历,Tomcat是一种野外的猫科动物,不依赖人类,独立生活。

Tomcat的作者,取这个名字的初衷是希望,这一款服务器可以自力更生,自给自足,

像Tomcat这样一种野生动物一般,不依赖其他插件,而可以独立达到提供web 服务的效果。

通俗点说他是jsp网站的服务器之一,就像asp网站要用到微软的IIS服务器,php网站用apache服务器一样,

因为你的jsp动态网站使用脚本语言等写的,需要有服务器来解释你的语言吧,

服务器就是这个功能。如果你的网页是纯html的,浏览器就可以直接解释查看效果,

但是你的网页一但是.jsp .asp .php 等的动态网页时浏览器自己就无法解释了,

需要上面说到的服务器。tomcat便可以解释jsp等java编写的网站。

2.2 使用Tocat和不使用的区别

如果不使用Tomcat的话,访问html网页是以本地文件形式打开的

image-20240419104543396

使用之后是以网页方式打开

image-20240419104601111

2.3 Tomcat的目录和文件

打开tomcat的解压之后的目录可以看到如下的目录结构:

image-20240419105117890

2.3.1 Bin

image-20240419105257272

bin目录主要是用来存放tomcat的命令,主要有两大类,一类是以.sh结尾的(linux命令),另一类是以.bat结尾的(windows命令)。

很多环境变量的设置都在此处,例如可以设置JDK路径、tomcat路径。

  • startup 用来启动tomcat。
  • shutdown 用来关闭tomcat。
  • 修改catalina可以设置tomcat的内存。
2.3.2 Conf

image-20240419105417089

conf目录主要是用来存放tomcat的一些配置文件。

  • server.xml可以设置端口号、设置域名或IP、默认加载的项目、请求编码。

  • web.xml可以设置tomcat支持的文件类型 。

  • context.xml可以用来配置数据源之类的 。

  • tomcat-users.xml用来配置管理tomcat的用户与权限。

2.3.3 Lib

lib目录主要用来存放tomcat运行需要加载的jar包。

image-20240419105640437

2.3.4 Logs

logs目录用来存放tomcat在运行过程中产生的日志文件,非常重要的是在控制台输出的日志。

(清空不会对tomcat运行带来影响)

在windows环境中,控制台的输出日志在catalina.xxxx-xx-xx.log文件中 。

在linux环境中,控制台的输出日志在catalina.out文件中。

2.3.5 Temp

temp目录用户存放tomcat在运行过程中产生的临时文件。(清空不会对tomcat运行带来影响)

2.3.6 Webapps

webapps目录用来存放应用程序,当tomcat启动时会去加载webapps目录下的应用程序。可以以文件夹、war包、jar包的形式发布应用。

image-20240419110037763

2.3.7 Work

work目录用来存放tomcat在运行时的编译后文件,例如JSP编译后的文件。

清空work目录,然后重启tomcat,可以达到清除缓存的作用。

2.4 配置文件
配置文件名作用(用途)
catalina.policy权限控制配置文件
catalina.propertiesTomcat属性配置文件
context.xml上下文配置文件
logging.properties日志log相关配置文件
server.xml主配置文件
Tomcat-users.xmlmanager-gui管理用户配置文件
web.xmlTomcat的servlet、servlet-mapping、filter、MIME等相关配置

server.xml为Tomcat的主要配置文件,可配置Tomcat的启动端口、网站目录、虚拟主机、开启https等重要功能。

Server 元素代表了整个servlet容器

image-20240419135155156

service 有一个或者多个Connector、一个Engine组成、负责处理Connector获得的客户请求。

image-20240419140247012

Connector 一个Connector在某个指定的端口上监听客户请求,并将获得请求交给Engine来处理,从Engine处获得回应并返回客户。

Engine 可以配置多个虚拟主机Virtual Host ,每个虚拟主机都有一个域名

Host 代表一个Viretual Host ,虚拟主机,每个虚拟主机和某个网络域名Domain Name 相匹配。

image-20240419140321839

Context 一个Context 对应一个Web Application

2.5 idea中配置Tomcat(极简流程)
  1. file—>setting
    image-20240419141116891

  2. Build,Execution,Deployment----->Application Servers
    image-20240419141323287

  3. 选择Tomcat解压的路径,导入即可
    image-20240419141432546
    在这里插入图片描述

  4. 在Run-中选择Edit Configurations…,在“+”中,就选择Tomcat Server,点击Local
    image-20240419141629718

image-20240419141825699

  1. 在Configuration中找到Tomcat地址,然后点击 OK 即可。
    image-20240419141950414

到这一步,Tomcat就配置完成啦~

2.Nginx

2.1 简介

  • Nginx (“engine x”) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。

  • Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

Nginx作用:

  • 反向代理

    就是nginx 代理多台 服务器(tomcat)

  • 负载均衡

​ 可以动态均衡的 将请求任务分配给多个 tomcat 服务器

  • 动静分离:将静态资源缓存到nginx服务器,请求到达nginx,动态资源代理到tomcat,静态资源直接从nginx获取。

nginx服务器:

  • 专业的高性能的HTTP服务:加载静态资源 (vue项目,html ,图片)

  • 反向代理web服务器:代理多台tomcat

tomcat服务器:

  • jsp的容器,servlet,处理jsp+servlet应用
  • 本质上我们写的controller中的处理器方法 都是由 DispatcherServlet调用,DispatcherServlet需要运行在tomcat容器中
  • tomcat服务器是用java语言开发的服务,作用:接收前端请求 完成数据的 增删改查(持久化),响应前端数据

2.2 Nginx的反向代理

首先,看一张关于正向代理和反向代理的图片

正向代理 (发生在客户端):

客户端向真实的服务器端发送请求,但是出于某种原因无法向真实的客户端发送请求,客户端就找到代理服务器,把请求发送给代理服务器,再由代理服务器把请求发送给真实的服务器,真实服务器并不知道具体访问我的客户端是谁(真实服务器看到的访问自己的是代理,并不是真实的客户端)

反向代理(发生在服务端):

客户端向服务器端发送请求(服务器端是一个集群(台服务器)),客户端并不知道具体访问哪一台服务器,客户端的请求就会被代理服务器所拦截,再由代理服务器把请求转交给集群中的某一个真实服务器,真实服务器最终把结果响应给代理服务器,代理服务器再把结果返回给客户端,客户端并不知道具体请求的服务器是真实服务器还是代理服务器

2.3 Nginx的负载均衡

什么是负载均衡?

负载均衡(Load Balance,简称 LB)是高并发高可用系统必不可少的关键组件,目标是尽力将网络流量平均分发到多个服务器上,以提高系统整体的响应速度和可用性。

负载均衡的主要作用如下:

**高并发:**负载均衡通过算法调整负载,尽力均匀的分配应用集群中各节点的工作量,以此提高应用集群的并发处理能力(吞吐量)。

**伸缩性:**添加或减少服务器数量,然后由负载均衡进行分发控制。这使得应用集群具备伸缩性。

**高可用:**负载均衡器可以监控候选服务器,当服务器不可用时,自动跳过,将请求分发给可用的服务器。这使得应用集群具备高可用的特性。

**安全防护:**有些负载均衡软件或硬件提供了安全性功能,如:黑白名单处理、防火墙,防 DDos 攻击等。

Nginx的三种负载均衡:轮询、权重轮询、ip_hash。

  1. 轮询(默认的方法):

    每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
    适合服务器配置相当,无状态且短平快的服务使用。也适用于图片服务器集群和纯静态页面服务器集群。

  2. 权重轮询(加权轮询、weight权重模式):

    指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
    这种方式比较灵活,当后端服务器性能存在差异的时候,通过配置权重,可以让服务器的性能得到充分发挥,有效利用资源。weight和访问比率成正比,用于后端服务器性能不均的情况。权重越高,在被访问的概率越大

  3. ip_hash:

    上述方式存在一个问题就是说,在负载均衡系统中,假如用户在某台服务器上登录了,那么该用户第二次请求的时候,因为我们是负载均衡系统,每次请求都会重新定位到服务器集群中的某一个,那么已经登录某一个服务器的用户再重新定位到另一个服务器,其登录信息将会丢失,这样显然是不妥的。
    我们可以采用ip_hash指令解决这个问题,如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器。每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

2.4 Nginx的动静分离

2.4.1 什么是动静分离

在Web开发中,通常来说,动态资源其实就是指那些后台资源,而静态资源就是指HTML,JavaScript,CSS,img等文件。

动静分离,说白了,就是将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用服务器的请求。后台应用服务器只负责动态数据请求。

优势:分担负载,减轻web服务器的压力,适用于大负载。静态资源放置cdn,同时还可以通过配置缓存到客户浏览器中,这样极大减轻web服务器的压力。

劣势:网络环境不佳时,ajax回应很慢,导致页面出现空白,出错处理会不好看。不利于网站SEO(搜索引擎优化),增加了开发复杂度。

动静分离就是根据一定规则静态资源的请求全部请求Nginx服务器,后台数据请求转发到Web应用服务器上。从而达到动静分离的目的。目前比较流行的做法是将静态资源部署在Nginx上,而Web应用服务器只处理动态数据请求。这样减少Web应用服务器的并发压力。

具体如下图所示:

image-20240418140722237

2.4.2 Nginx的动静分离

Nginx的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术。

动静分离技术其实是采用代理的方式,在server{}段中加入带正则匹配的location来指定匹配项针对PHP的动静分离:静态页面交给Nginx处理,动态页面交给PHP-FPM模块或Apache处理。

在Nginx的配置中,是通过location配置段配合正则匹配实现静态与动态页面的不同处理方式

.(img-ISVz2efD-1713509315036)]

2.4.2 Nginx的动静分离

Nginx的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术。

动静分离技术其实是采用代理的方式,在server{}段中加入带正则匹配的location来指定匹配项针对PHP的动静分离:静态页面交给Nginx处理,动态页面交给PHP-FPM模块或Apache处理。

在Nginx的配置中,是通过location配置段配合正则匹配实现静态与动态页面的不同处理方式

目前,通过使用Nginx大大提高了网站的响应速度,优化了用户体验,让网站的健壮性更上一层楼!

  • 27
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值