温馨提示×

CentOS与Tomcat的集成方案有哪些

小樊
47
2026-01-02 04:33:32
栏目: 智能运维

CentOS 与 Tomcat 的常见集成方案

  • Apache httpd + mod_jk(AJP):通过 AJP 1.3 协议连接 Apache 与 Tomcat,适合需要由 Apache 处理静态资源、利用 负载均衡容错、以及 无缝升级 的场景。核心文件为 workers.properties(定义后端 Tomcat/AJP)、mod_jk.conf(加载模块与通用参数)、可选的 uriworkermap.properties(URI 映射),并可在 Tomcat 的 server.xml 中为实例设置 jvmRoute 以配合粘性会话。该方式成熟稳定,社区资料丰富。
  • Apache httpd + mod_proxy(HTTP/HTTPS 反向代理):使用 mod_proxy、mod_proxy_http、mod_proxy_balancer 等模块,以 HTTP 协议将请求反向代理到 Tomcat 的 8080 端口,配置简洁、灵活,易于与现有虚拟主机、Rewrite 规则结合,适合快速发布与横向扩展。
  • Nginx + Tomcat(HTTP 反向代理):以 Nginx 作为前端反向代理与静态资源服务器,将动态请求转发至 http://127.0.0.1:8080,并通过 X-Real-IP / X-Forwarded-For / X-Forwarded-Proto 传递客户端信息,便于在 CentOS 7/8/9 上构建轻量高并发的前端接入层。

方案对比

方案 前端 协议与端口 典型场景 优点 注意点
Apache + mod_jk httpd AJP 1.3 / 8009 静态资源由 Apache 处理、会话粘滞、灰度/蓝绿发布 生态成熟、支持负载均衡与状态监控(如 jkstatus) 需编译/加载 mod_jk,配置项较多
Apache + mod_proxy httpd HTTP / 80/443 → 8080 快速发布、与 httpd 虚拟主机/rewrite 深度集成 配置直观、灵活扩展 长连接与头部透传需显式设置
Nginx + Tomcat Nginx HTTP / 80/443 → 8080 高并发静态资源服务 + 动态代理 资源占用低、并发能力强 需正确设置转发头与超时参数

上述三种方案均为业界常用做法,选择时优先考虑团队熟悉度、现有组件栈与运维复杂度。

关键配置要点

  • mod_jk 最小可用配置

    • 模块加载与参数:在 httpd.conf/etc/httpd/conf.d/mod_jk.conf 中加载模块并指定配置:
      • LoadModule jk_module modules/mod_jk.so
      • JkWorkersFile /etc/httpd/conf/workers.properties
      • JkMountFile /etc/httpd/conf/uriworkermap.properties(可选)
      • JkLogFile logs/mod_jk.log;JkLogLevel info
    • workers.properties(示例单实例):
      • worker.list=worker1
      • worker.worker1.type=ajp13
      • worker.worker1.host=127.0.0.1
      • worker.worker1.port=8009
    • uriworkermap.properties(示例):
      • /*=worker1
      • /jkstatus=status
    • Tomcat 侧:在 server.xml 的 Engine 上设置 jvmRoute=“worker1”,并确保 AJP Connector 启用(默认端口 8009)。如需监控,可启用 jkstatus 管理页面。
  • mod_proxy 最小可用配置(httpd)

    • 启用模块:在 httpd.conf 中确保加载 mod_proxy、mod_proxy_http、mod_proxy_balancer
    • 反向代理与负载均衡示例:
      • <Proxy balancer://tccluster>
        • BalancerMember http://127.0.0.1:8080
        • BalancerMember http://127.0.0.1:8081 status=+H
        • ProxySet lbmethod=byrequests
        • ProxySet stickysession=JSESSIONID
        • ProxySet timeout=30
        • ProxySet keepalive=On
        • ProxySet maxattempts=3
        • ProxySet retry=60
      • ProxyPass / balancer://tccluster/
      • ProxyPassReverse / balancer://tccluster/
    • 可按需添加 ProxyPreserveHost On、压缩、缓存与超时调优。
  • Nginx 最小可用配置

    • server 配置片段:
      • server {
        • listen 80;
        • server_name your.domain;
        • 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;
          • proxy_connect_timeout 5s;
          • proxy_send_timeout 15s;
          • proxy_read_timeout 15s;
        • }
      • }
    • 静态资源可单独 location 走 alias 或交由 Nginx 高效服务。

部署与运维建议

  • 运行用户与最小权限:创建 tomcat 专用用户运行实例,目录权限建议 750/640,避免以 root 运行,降低风险。
  • 服务化与自启动:使用 systemd 管理 Tomcat,示例关键项:
    • Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk
    • Environment=CATALINA_HOME=/srv/tomcat
    • ExecStart=/srv/tomcat/bin/startup.sh;ExecStop=/srv/tomcat/bin/shutdown.sh
    • User=tomcat;Group=tomcat;Restart=always
    • 执行:systemctl daemon-reload && systemctl enable --now tomcat
  • 防火墙与端口:开放 80/443(前端)与 8080(Tomcat,若仅内网代理可仅放通本机),如:firewall-cmd --permanent --add-service=http --add-port=8080/tcp && firewall-cmd --reload
  • 监控与日志:开启 mod_jk 日志(JkLogFile/JkLogLevel),或使用 jkstatus 做连接与负载可视化;Nginx/Apache 与 Tomcat 分别落盘访问与错误日志,便于排障与容量评估。

0