Nginx 不支持 Tomcat 插件,所谓“集成”实为反向代理+静态资源直服的动静分离:Nginx 处理 HTML/CSS/JS 等静态文件,通过 proxy_pass 将 JSP/Servlet 等动态请求转发至 Tomcat。

Nginx 本身不提供也不支持“Tomcat 插件”——它没有类似 Apache 的 mod_jk 或 Tomcat 原生插件机制。所谓“Nginx 集成 Tomcat 实现动静分离”,本质是通过反向代理 + 静态资源直 serving 的方式协作,而非安装插件。
你不需要、也不能在 Nginx 安装过程中“集成 Tomcat 插件”。正确路径是:独立安装 Nginx 和 Tomcat → 配置 Nginx 作为反向代理和静态服务层 → 按请求路径/后缀做路由分发。
下面说清楚关键点:
✅ 正确理解“集成”的真实含义
- Nginx 是纯 C 编写的高性能 Web 服务器/代理,无 Java 运行环境,无法加载 Tomcat 组件(如 catalina.jar、servlet 容器等);
- Tomcat 是 Java Servlet 容器,专注运行 JSP/Servlet,静态文件服务能力弱;
- “集成” = 网络层面协同:Nginx 接收所有请求,自己处理
.html、.css、.js、.png等静态资源;对/app/*.jsp或/api/*等动态路径,则用proxy_pass转发给 Tomcat 的 HTTP 端口(如8080)。
✅ 实现动静分离的核心配置项
在 nginx.conf 的 server 块中添加如下逻辑:
-
定义后端 Tomcat 组(支持负载均衡扩展)
upstream tomcat_backend { server 127.0.0.1:8080; # 单台时可写本地地址 # server 192.168.10.102:8080 weight=2; # server 192.168.10.103:8080; } -
静态资源直接由 Nginx 提供(高效、带缓存)
location ~* \.(html|htm|js|css|png|jpg|jpeg|gif|bmp|ico|svg|woff2?|ttf|eot)$ { root /var/www/static; # 静态文件实际存放目录 expires 7d; add_header Cache-Control "public, immutable"; } -
动态请求转发给 Tomcat
location ~ \.(jsp|do|action|servlet)/?$ { proxy_pass http://tomcat_backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_redirect off; }
⚠️ 注意:不要用
location /全局代理,否则静态资源也会被错误转发到 Tomcat,失去动静分离意义。
✅ 部署前必须确认的依赖与准备
- Tomcat 已正常启动,且能通过
curl http://127.0.0.1:8080/test.jsp访问测试页; - Nginx 已编译或安装完成(推荐使用官方源或
apt install nginx/yum install nginx); - 静态资源(图片、前端 HTML/CSS/JS)已统一放在 Nginx 可读目录(如
/var/www/static),路径与root指令一致; - 若跨主机部署,确保网络互通、防火墙放行对应端口(Nginx 的 80/443,Tomcat 的 8080)。
✅ 常见误区提醒
- ❌ 试图找 “nginx-tomcat-plugin.so” 或编译时加
--with-tomcat-module—— 不存在; - ❌ 把
.jsp文件放到 Nginx 的html/目录下指望它执行 —— Nginx 不解析 JSP; - ❌ 在 Tomcat 中配置
mod_proxy或反向代理自身 —— 方向反了,应由 Nginx 代理 Tomcat,不是反过来; - ❌ 忘记设置
proxy_set_header导致 Tomcat 日志中RemoteAddr全是127.0.0.1—— 影响真实 IP 获取和日志分析。
不复杂但容易忽略。


















