当前位置:首页 > 虚拟主机 > 正文

如何配置Apache反向代理Tomcat | Apache反向代理Tomcat步骤详解

要将 Apache 配置为 Tomcat 的反向代理,请按以下步骤操作:

核心配置步骤:

  1. 启用必要的 Apache 模块

    sudo a2enmod proxy proxy_http proxy_wstunnel
  2. 编辑 Apache 配置文件

    在虚拟主机配置(如 /etc/apache2/sites-available/000-default.conf)中添加:

    如何配置Apache反向代理Tomcat | Apache反向代理Tomcat步骤详解 第1张

    <VirtualHost *:80> ServerName yourdomain.com # 基本代理配置:将所有请求转发到 Tomcat ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ # 可选:代理 WebSocket 请求(如需要) ProxyPass /ws/ ws://localhost:8080/ws/ ProxyPassReverse /ws/ ws://localhost:8080/ws/ # 可选:自定义路径映射(将 /app 代理到 Tomcat) # ProxyPass /app http://localhost:8080/myapp/ # ProxyPassReverse /app http://localhost:8080/myapp/ </VirtualHost>
  3. 保存配置并重启 Apache

    sudo apachectl configtest # 检查语法 sudo systemctl restart apache2


关键参数说明:

  • ProxyPass:将客户端请求转发到 Tomcat(端口 8080)
  • ProxyPassReverse:重写 Tomcat 响应中的 Location、Content-Location 等头部,确保客户端看到的是 Apache 地址而非 Tomcat 内部地址
  • WebSocket 支持:通过 proxy_wstunnel 模块代理 ws:// 协议


高级配置场景:

仅代理特定路径(非根路径)

# 将 /myapp 的请求代理到 Tomcat 的 /app 路径 ProxyPass /myapp http://localhost:8080/app ProxyPassReverse /myapp http://localhost:8080/app

排除静态文件代理(由 Apache 直接处理)

# 优先处理本地静态文件,其余请求转发到 Tomcat ProxyPass /static ! ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/

HTTPS 配置(SSL 终止)

<VirtualHost *:443> ServerName yourdomain.com SSLEngine on SSLCertificateFile /path/to/cert.pem SSLCertificateKeyFile /path/to/privkey.pem # 通过 HTTPS 代理 HTTP 后端 ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ </VirtualHost>

Tomcat 连接器优化(server.xml)

在 Tomcat 的 conf/server.xml 中添加:

如何配置Apache反向代理Tomcat | Apache反向代理Tomcat步骤详解 第2张

<Connector port="8080" protocol="HTTP/1.1" proxyName="yourdomain.com" <!-- 客户端看到的域名 --> proxyPort="443" <!-- 客户端访问的端口(SSL 用 443)--> secure="true" <!-- 若用 HTTPS 则设为 true --> connectionTimeout="20000" />


验证与调试:

  1. 检查代理是否生效

    如何配置Apache反向代理Tomcat | Apache反向代理Tomcat步骤详解 第3张

    观察返回的 Server 头部应包含 Apache 而非 Tomcat

  2. 查看日志

    • Apache 错误日志:/var/log/apache2/error.log
    • Tomcat 访问日志:logs/localhost_access_log.*.txt
    • 常见问题排查

      • 502 Bad Gateway:检查 Tomcat 是否运行在 8080 端口
      • 404 Not Found:确认 Tomcat 应用路径与代理路径匹配
      • WebSocket 失败:确保已启用 proxy_wstunnel 模块
      • 通过以上配置,Apache 将作为前端代理处理客户端请求,并将动态内容无缝转发给后端的 Tomcat 服务器,同时隐藏 Tomcat 的内部细节。

0