Nginx+Tomcat负载均衡、动静分离

Tomcat简介

Tomcat 是由 Apache 软件基金会(ASF)开发的一款开源的 Servlet 容器 和 Web 服务器,主要用于运行基于 Java 的 Web 应用程序(如 JSP、Servlet)。它实现了 Java Servlet、JavaServer Pages(JSP)、Java Expression Language(EL)和 WebSocket 等 Java EE 规范,是轻量级、高性能的 Java Web 应用服务器,广泛应用于开发和生产环境。

Tomcat 的核心功能

Servlet 容器

解析和执行 Java Servlet 代码,处理 HTTP 请求和响应。

管理 Servlet 的生命周期(初始化、服务、销毁)。

JSP 引擎

将 JSP 文件动态编译为 Servlet,生成 HTML 响应。

静态资源服务

支持直接提供 HTML、CSS、JavaScript、图片等静态文件。

会话管理

提供 HttpSession 接口,支持用户会话跟踪。

安全与认证

支持基于角色的访问控制(RBAC)、SSL/TLS 加密等。

集群与负载均衡

通过插件支持多节点部署,实现高可用性。

Tomcat架构

Tomcat 采用模块化设计,主要组件包括:

组件 作用

Server 顶层容器,代表整个 Tomcat 实例。

Service 连接 Connector 和 Engine,提供服务(如 HTTP、AJP)。

Connector 处理客户端连接(如 HTTP 请求),将请求转发给 Engine。

Engine 处理请求的核心组件,管理多个 Host(虚拟主机)。

Host 虚拟主机,如 localhost,管理多个 Context(Web 应用)。

Context 单个 Web 应用(如 /myapp),对应一个 WAR 文件或目录。

Tomcat 的特点

轻量级

相比 WebLogic、WebSphere 等商业服务器,Tomcat 体积小、启动快。

开源免费

遵循 Apache 许可证,无商业使用限制。

跨平台

支持 Windows、Linux、macOS 等操作系统。

易于集成

可与 Spring Boot、Struts 等框架无缝集成。

社区活跃

长期维护,版本更新频繁,支持最新 Java 特性

Tomact配置

关闭防火墙及系统内核

root@localhost \~\]# systemctl stop firewalld #关闭防火墙 \[root@localhost \~\]# setenforce 0 #关闭系统内核 在安装Tomcat之前需要安装Tomcat依赖环境 \[root@localhost \~\]# dnf -y install java 将Tomcat的安装包压缩(压缩就能用 绿色安装) \[root@localhost \~\]# tar zxf apache-tomcat-9.0.8.tar.gz 移动至别的目录并重置名字 \[root@localhost \~\]# mv apache-tomcat-9.0.8 /usr/local/tomcat Tomcar 主要文件信息 bin/:存放 Windows 或 Linux 平台上启动和关闭 Tomcat 的脚本文件。 conf/: 存放 Tomcat 服务器的各种全局配置文件,其中最重要的是 server.xml 和web. xml. lib/:存放 Tomcat 运行需要的库文件(JARS) -logs:存放 Tomcat 执行时的 LOG 文件 -webapps:Tomcat 的主要 Web 发布目录(包括应用程序示例) work:存放 JSP 编译后产生的 class 文件。 配置文件说明 catalina.policy:权限控制配置文件。 catalina.properties:Tomcat 属性配置文件。 context.xml:上下文配置文件。 logging.properties: 日志 log 相关配置文件。 server.xml:主配置文件。 tomcat-users.xml:manager-gui管理用户配置文件(Tomcat 安装后提供-个 manager-gui 的管理界面,通过配置该文件可以开启访问)。 web.xml:Tomcat 的 servlet、servlet-mapping、filter、MIME 等相关配置。 启动Tomcat \[root@localhost \~\]# /usr/local/tomcat/bin/startup.sh #启动 \[root@localhost \~\]# /usr/local/tomcat/bin/shutdown.sh #关闭 检测是否运行 \[root@localhost \~\]# netstat -anpt \|grep java tcp6 0 0 127.0.0.1:8005 ::😗 LISTEN 2387/java tcp6 0 0 :::8080 ::😗 LISTEN 2387/java tcp6 0 0 :::8009 ::😗 LISTEN 2387/java 验证测试网页 ![img](https://i-blog.csdnimg.cn/direct/d8d6ad9ae6184636a2ae8ff0d14e6c2b.png) 案例一:Java的Web站点 关闭防火墙及系统内核 \[root@localhost webapp1\]# systemctl stop firewalld \[root@localhost webapp1\]# setenforce 0 在安装Tomcat之前需要安装Tomcat依赖环境 \[root@localhost \~\]# dnf -y install java 将Tomcat的安装包压缩(压缩就能用 绿色安装) \[root@localhost \~\]# tar zxf apache-tomcat-9.0.8.tar.gz 移动至别的目录并重置名字 \[root@localhost \~\]# mv apache-tomcat-9.0.8 /usr/local/tomcat 创建测试页面区分两个网站 ```shell [root@localhost bin]# mkdir -p /web/webapp1 [root@localhost bin]# cd /web/webapp1/ [root@localhost bin]# vim index.jsp 02 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> JSP test1 page <% out.println("动态页面 1,http://www.test1.com");%>

动态页面的图片 1

两个网站 03 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> JSP test2 page <% out.println("动态页面 2,http://www.test2.com");%>
动态页面的图片 2

``` 修改Tomcat配置文件 ```shell [root@localhost ~]# vim /usr/local/tomcat/conf/server.xml 忽略以上所有信息 148行 #只添加这一行 关闭Tomcat在启动 ``` ```shell [root@localhost ~]# /usr/local/tomcat/bin/startup.sh #启动 [root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh #关闭 ``` 102验证 ![img](https://i-blog.csdnimg.cn/direct/36d79fa114dd47d698554aee1f68a6c1.png) 103验证 ![img](https://i-blog.csdnimg.cn/direct/c4eb978c4db94108abb608ccad92b573.png) #### 案例二:Nginx+Tomcat负载均衡、动静分离 跟案例一操作基本上是一样的,只是配置不一样 这里不再演示如何安装Nginx 101Nginx 102Tomcat1 103Tomcat2 修改Nginx配置文件 ```shell 忽略以上信息 添加真实服务器的ip、端口、权重 #gzip on; upstream my_tomcat{ server 192.168.10.102:8080 weight=1; server 192.168.10.103:8080 weight=2; } 忽略以下信息 server { listen 80; server_name localhost; charset utf-8; #在server中开启utf-8,要不然会乱码 #access_log logs/host.access.log main; 在location下写我们自己的location location ~ .*\.jsp$ { proxy_set_header HOST $host; #proxy_set_header Client-IP $remote_addr; #这三条是之后,查看日志信息的时候查看真实IP访问Tomcat服务器的 #proxy_set_header X-Real-IP $remote_addr; #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://my_tomcat; } location ~ .*\.(gif|jpg|png)$ { root /usr/local/nginx/html/img; expires 30d; } ``` 配置完后 检查配置是否有误 ```shell [root@localhost ~]# nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful ``` 重启 ```shell [root@localhost img]# systemctl restart nginx ``` !\[img\](https://i-blog.csdnimg.cn/direct/f2797d45dce648829303fe949d6dcca4.png 后续查看日志并不能看到真实的ip访问Tomcat ![img](https://i-blog.csdnimg.cn/direct/00f8662740de4503a524576a5ec22960.png) 需要给上面的配置#号去掉 ```shell 忽略以上信息 添加真实服务器的ip、端口、权重 #gzip on; upstream my_tomcat{ server 192.168.10.102:8080 weight=1; server 192.168.10.103:8080 weight=2; } 忽略以下信息 server { listen 80; server_name localhost; charset utf-8; #在server中开启utf-8,要不然会乱码 #access_log logs/host.access.log main; 在location下写我们自己的location location ~ .*\.jsp$ { proxy_set_header HOST $host; proxy_set_header Client-IP $remote_addr; #这三条是之后,查看日志信息的时候查看真实IP访问Tomcat服务器的 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://my_tomcat; } location ~ .*\.(gif|jpg|png)$ { root /usr/local/nginx/html/img; expires 30d; } ``` 配置完后 检查配置是否有误 [root@localhost ~]# nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful 重启 ```shell [root@localhost img]# systemctl restart nginx 修改Tomcat文件 [root@localhost ~]# vim /usr/local/tomcat/conf/server.xml #只有%{X-Real-IP}i 需要添加 访问nginx刷新并查看Tomcat日志信息 ``` ![img](https://i-blog.csdnimg.cn/direct/75c3e049d9c84f3b810f86ae510cf1af.png)

相关推荐
闲云一鹤1 天前
nginx 快速入门教程 - 写给前端的你
前端·nginx·前端工程化
何中应4 天前
Nginx转发请求错误
前端·后端·nginx
大大水瓶5 天前
Tomcat
java·tomcat
芝士雪豹只抽瑞克五5 天前
Nginx 高性能Web服务器笔记
服务器·nginx
失重外太空啦5 天前
Tomcat
java·服务器·tomcat
屎到临头想搅便5 天前
TOMCAT
java·tomcat
失重外太空啦5 天前
nginx
运维·nginx
大大水瓶5 天前
HAProxy 从入门到实战:负载均衡与流量管理全解析
运维·负载均衡
微风起皱5 天前
企业级WEB应用服务器TOMCAT
java·前端·tomcat