文章目录
前言
在当前的Web开发与部署场景中,高效、灵活的服务器架构设计是支撑业务稳定运行的关键。Tomcat作为轻量级的Java Web应用服务器,凭借其开源特性、跨平台兼容性以及对Servlet规范的完整实现,成为众多开发者部署动态Web应用的首选。而Nginx以其高性能的反向代理和负载均衡能力,常被用于优化静态资源处理及分发动态请求。两者的结合不仅能够充分发挥各自优势,还能显著提升系统的并发处理能力和可用性。
本实验通过实际环境搭建,演示如何将Nginx与Tomcat协同部署,实现动静分离与负载均衡。内容涵盖Nginx的编译安装、Tomcat的多实例配置、JSP动态页面处理以及Nginx反向代理规则的定制。实验步骤中提供了关键配置文件的修改示例,如server.xml的端口调整、nginx.conf的负载均衡策略定义,并包含测试验证方法。通过此方案,用户可构建一个兼顾性能与扩展性的Web服务架构,适用于生产环境的高并发需求。
Tomcat 介绍
Tomcat 概述
Tomcat 是由 Apache 软件基金会维护的开源轻量级 Web 应用服务器,实现了 Java Servlet、JSP 和 WebSocket 等 Jakarta EE 规范。其核心组件 Catalina 作为 Servlet 容器,专门处理动态 Web 内容。
主要功能
- Java Web 应用托管
支持部署基于 Servlet/JSP/WebSocket 的企业应用,如电商平台、ERP 系统等 - HTTP 服务
可独立提供静态资源(HTML/CSS)和动态请求处理能力 - 开发测试平台
开发者常用作本地调试环境,快速验证 Web 应用
核心优势
- 开源免费
无商业授权费用,适合中小项目 - 高效轻量
低资源消耗,快速启动部署 - 跨平台
基于 Java 开发,支持 Windows/Linux/macOS - 丰富生态
活跃社区支持,完善文档,轻松集成 Spring/Maven - 模块化架构
可按需配置功能,如单独使用 Servlet 容器或搭配 Nginx 优化性能
Tomcat+Nginx 整合实验
反向代理方案
nginx+tomcat 组合部署
/usr/local目录通常存放用户手动安装的软件,区别于系统包管理器安装的应用
步骤1:Nginx 安装
- 关闭防火墙和 SELinux
- 安装依赖包
- 创建专用用户
- 源码编译安装
- 配置软链接
- 编辑 nginx.conf
- 配置 systemd 服务文件
- 验证服务:
systemctl reload/restart nginx
步骤2:JDK 环境配置
- 解压 JDK 至
/usr/local - 配置环境变量:
bash
vim /etc/profile
# 添加以下内容
export JAVA_HOME=/usr/local/jdk1.8.0_91
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
- 生效配置并验证:
bash
source /etc/profile
java -version # 应显示1.8.0_91版本
步骤3:Tomcat 部署
bash
tar zxvf apache-tomcat-8.5.16.tar.gz
mv /opt/apache-tomcat-8.5.16/* /usr/local/tomcat
/usr/local/tomcat/bin/startup.sh
netstat -ntap | grep 8080 # 验证端口
浏览器访问测试:http://[服务器IP]:8080
配置文件修改:
xml
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true"/>
</Host>
步骤4:JSP 页面配置
jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head><title>JSP test2.1 page</title></head>
<body>
<% out.println("动态页面 2,http://www.test2.com...188-8080");%>
</body>
</html>
步骤5:服务验证
bash
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
ps aux | grep tomcat
访问:http://[服务器IP]:8080
扩展:多实例部署
方案1 :新虚拟机重复完整部署流程
方案2:同一主机克隆实例:
bash
cp -rp /usr/local/tomcat /usr/local/tomcat1
修改关键配置:
xml
<!-- server.xml -->
<Server port="8006" shutdown="SHUTDOWN">
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443"/>
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000"/>
<Context docBase="/usr/local/tomcat1/webapps/test" path="" reloadable="true"/>
负载均衡配置
conf
# nginx.conf
upstream tomcatserver {
server 192.168.80.180:8080 weight=3;
server 192.168.80.188:8080 weight=1;
server 192.168.80.188:8081 weight=1;
}
server {
location ~ .*\.jsp$ {
proxy_pass http://tomcatserver;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location ~ .*\.(gif|jpg|css)$ {
root /usr/local/nginx/html/img;
expires 10d;
}
}
测试验证
- 静态资源:
http://192.168.80.129/game.png - 负载均衡:反复访问
http://192.168.80.129/index.jsp观察响应分布