楼主: Tina邓
76 0

nginx反向代理及负载均衡 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

40%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
20 点
帖子
1
精华
0
在线时间
0 小时
注册时间
2018-4-22
最后登录
2018-4-22

楼主
Tina邓 发表于 2025-11-27 16:43:44 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

前言

随着信息技术的持续演进,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等工具,实现配置文件的批量分发与应用部署的自动化流程,显著降低人工维护成本。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Processes upstream Location forward threads

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
扫码
拉您进交流群
GMT+8, 2026-2-10 20:14