前言
随着信息技术的持续演进,Web服务架构的高可用性与性能优化日益受到重视。Nginx结合Tomcat实现反向代理与负载均衡,已成为主流部署方案之一。本文档详细阐述该架构的最终修正版配置流程,为系统部署提供可靠参考。
提示:这里可以添加本文要记录的大概内容:
Nginx反向代理+Tomcat负载均衡部署手册(最终修正版)
一、核心修正说明
本次更新重点调整了原有IP地址规划,将所有Tomcat节点统一至192.168.145网段(原使用10网段已作废),并同步修改Nginx配置中的后端服务器地址,确保整体部署环境的一致性与准确性。
二、更新后的部署规划(最终版)
| 服务器角色 | IP地址 | 端口 | 说明 |
|---|---|---|---|
| Nginx负载均衡器 | 192.168.145.110 | 80 | 对外提供80端口访问,同时部署Tomcat3实例 |
| Tomcat节点1 | 192.168.145.120 | 8080 | 第一台Tomcat服务实例 |
| Tomcat节点2 | 192.168.145.120 | 8081 | 同一主机上的第二个Tomcat实例 |
| Tomcat节点3 | 192.168.145.110 | 8080 | 与Nginx共用服务器的Tomcat实例 |
三、关键配置更新(按节点修正)
1. Tomcat节点1(192.168.145.120:8080)
更新测试页面内容,确保显示正确的IP标识信息,便于后续负载均衡验证时识别来源节点。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head><title>JSP test1 page</title></head>
<body>
<% out.println("动态页面 1,http://www.test1.com");%>
<br>
<% out.println("服务器IP:192.168.145.120:8080");%>
</body>
</html>
2. Tomcat节点2(192.168.145.120:8081)
同步更新其JSP测试页面内容,保证在轮询过程中可清晰区分不同实例响应结果。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head><title>JSP test2 page</title></head>
<body>
<% out.println("动态页面 2,http://www.test2.com");%>
<br>
<% out.println("服务器IP:192.168.145.120:8081");%>
</body>
</html>
3. Tomcat节点3(192.168.145.110:8080)
补充完整安装与配置步骤如下:
# 1. 安装JDK(参照前期文档步骤,此处略过)
# 2. 安装Tomcat(建议路径独立,避免与Nginx或其他服务冲突)
cd /opt
tar zxvf apache-tomcat-8.5.16.tar.gz -C /usr/local/
mv /usr/local/apache-tomcat-8.5.16 /usr/local/tomcat3 # 重命名为tomcat3以作区分
# 3. 部署测试页面
mkdir -p /usr/local/tomcat3/webapps/test
vim /usr/local/tomcat3/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head><title>JSP test3 page</title></head>
<body>
<% out.println("动态页面 3,http://www.test3.com");%>
<br>
<% out.println("服务器IP:192.168.145.110:8080");%>
</body>
</html>
# 4. 配置Context(编辑tomcat3的server.xml文件)
vim /usr/local/tomcat3/conf/server.xml
# 在 <Host> 标签内部添加以下内容:
<Context docBase="/usr/local/tomcat3/webapps/test" path="" reloadable="true"/>
# 5. 启动Tomcat3服务(注意确认8080端口未被占用,若存在冲突需调整端口)
/usr/local/tomcat3/bin/startup.sh
# 验证方式:浏览器访问 http://192.168.145.110:8080/index.jsp 查看页面输出
4. Nginx负载均衡配置(最终版)
完成各Tomcat节点部署后,配置Nginx实现请求分发,采用默认轮询策略,将动态请求转发至三个Tomcat实例。
http {
# 其他基础配置不变(略)
# 负载均衡节点更新为145网段
upstream tomcat_server {
server 192.168.145.120:8080 weight=1; # Tomcat节点1
server 192.168.145.120:8081 weight=1; # Tomcat节点2
server 192.168.145.110:8080 weight=1; # Tomcat节点3(同Nginx服务器)
}
server {
listen 80;
server_name www.kgc.com;
charset utf-8;
# 静态页面配置
location / {
root /usr/local/nginx/html;
index index.html index.htm;
}
# JSP动态请求转发
location ~ .*\.jsp$ {
proxy_pass http://tomcat_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 静态资源配置
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
root /usr/local/nginx/html;
expires 10d;
}
}
}
四、最终测试验证
通过以下几类访问进行综合验证,确认系统功能正常:
| 测试类型 | 访问地址 | 预期效果 |
|---|---|---|
| 静态页面 | http://192.168.145.110/ | 成功显示“这是Nginx静态页面” |
| 静态图片 | http://192.168.145.110/img/game.jpg | 图片正常加载(需确保文件存在于/usr/local/nginx/html/img/目录下) |
| 负载均衡(JSP) | http://192.168.145.110/index.jsp | 多次刷新页面,响应结果在三个Tomcat节点间轮换展示,并分别显示对应的145网段IP地址 |
五、注意事项
- 确保所有服务器时间同步,避免日志记录或会话管理出现异常。
- 关闭防火墙或开放对应端口(如80、8080、8081),防止网络策略阻断通信。
- 多个Tomcat实例运行于同一主机时,应检查端口冲突情况,尤其是shutdown端口和AJP连接器。
- Nginx配置中upstream模块需准确指向各Tomcat节点的新IP地址(192.168.145.x)。
- 定期备份关键配置文件(如nginx.conf、server.xml),便于故障恢复。
六、总结与扩展方向
本手册完成了基于Nginx与多实例Tomcat的负载均衡架构部署,实现了动静分离与高可用访问。未来可在此基础上进一步拓展:
- 引入Session共享机制(如Redis)实现会话保持;
- 配置HTTPS加密传输提升安全性;
- 结合Keepalived实现Nginx主备高可用;
- 集成监控工具对服务状态进行实时观测。
当Tomcat3与Nginx部署在同一服务器时,需首先确认Tomcat3所使用的8080端口未被其他进程占用。可通过以下命令进行检查:
netstat -ntlp | grep 8080
若发现Tomcat3启动失败,应优先排查是否存在端口冲突问题。解决方案包括修改Tomcat的server.xml配置文件中的服务端口(例如更改为8082),同时务必同步更新Nginx中对应的upstream配置,以确保请求能正确转发。
在完成所有节点的相关配置后,应执行如下命令对Nginx配置进行语法校验:
nginx -t
确认无误后,执行重载操作使配置生效:
systemctl reload nginx
六、总结与后续优化方向
本方案充分利用Nginx与Tomcat各自的性能优势,构建了一个轻量级且高效的Java Web应用架构。该架构不仅有效缓解了单节点带来的性能压力,还提升了系统的可用性,具备良好的实际应用价值。
未来可从以下几个方面进一步优化和扩展系统能力:
- 性能调优:将Nginx的worker_processes设置为与服务器CPU核心数一致,提升并发处理能力;同时根据实际负载调整Tomcat线程池参数,如maxThreads和minSpareThreads,以更好匹配业务并发需求。
- 高可用性增强:引入Nginx双机热备机制,结合keepalived实现故障自动切换,避免负载均衡层成为单点故障。
- 监控体系升级:集成Prometheus与Grafana,对Nginx的连接状态、请求速率以及Tomcat的线程运行情况等关键指标进行可视化实时监控。
- 自动化运维建设:利用Ansible或Jenkins等工具,实现配置文件的批量分发与应用部署的自动化流程,显著降低人工维护成本。


雷达卡


京公网安备 11010802022788号







