You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Apache httpd配置域名代理隐藏Tomcat 8080端口访问地址

基于Apache httpd的内网站点反代配置方案

前置准备

配置后地址栏跳转到http://www.example.com:8080/app的核心原因有两点:一是反向代理规则没有改写Tomcat返回的重定向响应头,二是Cookie路径、反代路径映射配置不全,导致应用触发主动跳转。以下是可直接落地的配置步骤:

  • 首先在所有访问客户端、服务器本地的hosts文件追加域名映射(原有配置仅做了www域名的映射,缺少app域名的解析规则):
    192.168.88.80 app.example.com
    
  • 打开Apache主配置文件httpd.conf,取消以下模块前的注释,启用反代必需组件:
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    LoadModule headers_module modules/mod_headers.so
    LoadModule rewrite_module modules/mod_rewrite.so
    
    同时确认配置中已引入虚拟主机配置文件:Include conf/extra/httpd-vhosts.conf

核心虚拟主机配置

编辑conf/extra/httpd-vhosts.conf,添加如下虚拟主机规则,注意不要漏写路径末尾的斜杠,否则会出现路径映射错位:

<VirtualHost *:80>
    ServerName app.example.com
    # 关闭正向代理能力,避免服务被滥用为公网代理
    ProxyRequests Off
    <Proxy *>
        Require all granted
    </Proxy>

    # 路径映射:将根路径请求转发到Tomcat下的/app应用
    ProxyPass / http://127.0.0.1:8080/app/
    ProxyPassReverse / http://127.0.0.1:8080/app/
    
    # 修正Cookie域名与路径,避免因Cookie校验失败触发应用跳转
    ProxyPassReverseCookieDomain 127.0.0.1 app.example.com
    ProxyPassReverseCookiePath /app /

    # 关键规则:改写Tomcat返回的重定向头,替换掉真实端口、路径,避免浏览器拿到真实地址触发跳转
    Header edit Location ^http://www.example.com:8080/app/(.*)$ http://app.example.com/$1
    Header edit Location ^http://127.0.0.1:8080/app/(.*)$ http://app.example.com/$1

    # 传递真实客户端信息到后端Tomcat,方便应用记录访问来源
    RequestHeader set X-Forwarded-For %{REMOTE_ADDR}s
    RequestHeader set X-Forwarded-Host app.example.com
    RequestHeader set X-Forwarded-Proto http
</VirtualHost>

Tomcat侧可选加固(彻底杜绝自跳转问题)

如果配置完Apache后仍偶发跳转,可以修改Tomcat配置文件conf/server.xml,找到8080端口对应的Connector节点,添加代理相关参数,让Tomcat自身生成的URL直接使用对外域名,不再携带8080端口和/app路径:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"
           proxyName="app.example.com"
           proxyPort="8" />

如果不想修改Tomcat配置,仅靠上述Apache规则也能实现需求,该步骤为可选优化项。


生效验证

  1. 执行配置语法检查:httpd -t,返回Syntax OK即配置无语法错误
  2. 重启Apache服务:systemctl restart httpd(CentOS/RHEL系列)或systemctl restart apache2(Debian/Ubuntu系列)
  3. 清空浏览器缓存后访问http://app.example.com,地址栏会始终保留该域名,不会暴露8080端口与/app路径。

常见配置踩坑点

  • ProxyPass规则末尾漏写斜杠,会导致路径映射错位,静态资源、接口请求返回404
  • 客户端未配置app.example.com的hosts映射,请求根本没有到达服务器的Apache服务
  • 未配置Header重写规则,Tomcat返回的301/302重定向头直接透传给浏览器,触发地址栏跳转
  • 未配置Cookie路径修正,应用登录态校验失败后会自动跳转到带/app的真实路径

内容的提问来源于stack exchange,提问作者zoostar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 20:21:18