温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎样整合tomcat和nginx

发布时间:2026-10-29 09:51:02 来源:亿速云 阅读:88 作者:小樊 栏目:系统运维

整合 Tomcat 和 Nginx 通常是让 Nginx 作为反向代理 / 负载均衡器,将请求转发给后端的 Tomcat 处理(尤其是 Java Web 应用)。下面从原理 → 常见架构 → 配置示例 → 注意事项逐步说明。


一、为什么整合 Nginx + Tomcat

常见原因:

  • Nginx 处理静态资源更高效(html、css、js、图片)
  • Tomcat 专注处理 JSP / Servlet / Java 接口
  • 支持 负载均衡(多个 Tomcat)
  • 支持 HTTPS 统一入口
  • 提高安全性和并发能力

二、典型架构

客户端
  |
Nginx(80 / 443)
  |--------> Tomcat(8080)
  |--------> Tomcat(8081)  (可选,负载均衡)

三、基础整合方式(反向代理)

1️⃣ Tomcat 默认配置(不改)

  • Tomcat 端口:8080
  • 项目访问:http://ip:8080/项目名

2️⃣ Nginx 安装(略)

确保 Nginx 已安装:

nginx -v

3️⃣ Nginx 反向代理配置

编辑 Nginx 配置(通常 /etc/nginx/nginx.conf 或 /etc/nginx/conf.d/*.conf):

server {
    listen 80;
    server_name www.example.com;

    # 静态资源由 Nginx 处理
    location ~* \.(html|css|js|png|jpg|gif)$ {
        root /data/static;
        expires 30d;
    }

    # 动态请求转发给 Tomcat
    location / {
        proxy_pass http://127.0.0.1:8080;
        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_set_header X-Forwarded-Proto $scheme;
    }
}

✅ 访问 http://www.example.com → 实际由 Tomcat 处理


四、动静分离(推荐)

目录结构示例

/data/
 ├── static/        # 静态资源
 │    ├── css/
 │    ├── js/
 │    └── images/
 └── tomcat/webapps/ROOT

Nginx 配置

location /static/ {
    root /data;
}

location / {
    proxy_pass http://127.0.0.1:8080;
}

五、Tomcat + Nginx 负载均衡

Nginx 配置

upstream tomcat_cluster {
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
}

server {
    listen 80;

    location / {
        proxy_pass http://tomcat_cluster;
    }
}

✅ 适合高并发场景


六、HTTPS(Nginx 统一处理)

server {
    listen 443 ssl;
    server_name www.example.com;

    ssl_certificate     /path/fullchain.pem;
    ssl_certificate_key /path/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}

Tomcat 可保持 HTTP(内网)


七、Tomcat 中需要注意的配置

1️⃣ 获取真实 IP

server.xml 中:

<Valve className="org.apache.catalina.valves.RemoteIpValve"
       remoteIpHeader="X-Forwarded-For"
       protocolHeader="X-Forwarded-Proto"/>

2️⃣ Context 路径

避免项目名不一致:

<Context path="" docBase="myapp"/>

八、常见问题

❌ 404

  • Nginx proxy_pass 路径是否正确
  • Tomcat 项目是否部署成功

❌ 端口冲突

  • Nginx:80 / 443
  • Tomcat:8080

❌ Session 丢失(负载均衡)

  • 使用 ip_hash
upstream tomcat_cluster {
    ip_hash;
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
}

九、总结

✅ 最常用方案:

  • Nginx:反向代理 + 静态资源
  • Tomcat:Java 应用
  • HTTPS 在 Nginx 终结

如果你有:

  • 具体系统(CentOS / Ubuntu / Windows)
  • 单 Tomcat 还是集群
  • Spring Boot 还是传统 WAR

我可以给你完全可直接用的配置。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手