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

Windows下使用Apache HTTPD配置反向代理的问题求助

问题分析与解决步骤

核心问题

你现在的核心错误是混淆了Apache HTTPD和Tomcat的配置体系:

  • Apache HTTPD的核心配置文件是httpd.conf(如果找不到,可能是安装时用了拆分配置,比如conf/httpd.conf.default,复制一份改名为httpd.conf即可)
  • 你修改的server.xml是Apache Tomcat的专属配置文件,和HTTPD完全无关,所以你的配置根本没生效,这也是catalina日志没相关记录的原因——你操作的是Tomcat的配置,但实际用的是HTTPD服务

正确配置步骤(Windows下Apache HTTPD)

1. 启用反向代理相关模块

打开HTTPD的主配置文件,取消以下行的注释(去掉行首的#):

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_html_module modules/mod_proxy_html.so
LoadModule rewrite_module modules/mod_rewrite.so

2. 配置虚拟主机与反向代理

在配置文件末尾添加虚拟主机配置,实现单个域名下的两个应用代理:

<VirtualHost *:80>
    ServerName yourdomain.com

    # 代理App1
    ProxyPass /app1 http://app1-remote-server-ip:app1-remote-server-port/
    ProxyPassReverse /app1 http://app1-remote-server-ip:app1-remote-server-port/

    # 代理App2
    ProxyPass /app2 http://app2-remote-server-ip:app2-remote-server-port/
    ProxyPassReverse /app2 http://app2-remote-server-ip:app2-remote-server-port/

    # 处理Swagger UI的路径映射问题(关键)
    ProxyHTMLURLMap http://app1-remote-server-ip:app1-remote-server-port/ /app1/
    ProxyHTMLURLMap http://app2-remote-server-ip:app2-remote-server-port/ /app2/

    # 启用HTML内容重写
    RequestHeader unset Accept-Encoding
    ProxyHTMLCharsetOut *
</VirtualHost>

3. 适配Swagger UI的路径

Swagger UI会根据后端返回的原始URL生成页面链接,直接代理会导致链接指向远程服务器地址,所以需要额外处理:

  • 上面配置中的ProxyHTMLURLMap会自动替换Swagger页面里的原始地址为代理后的路径
  • 同时确保你的Spring Boot应用的Swagger配置中,指定对应代理路径:
@Bean
public Docket api() {
    return new Docket(DocumentationType.OAS_30)
            .select()
            .apis(RequestHandlerSelectors.basePackage("com.your.app.package"))
            .paths(PathSelectors.any())
            .build()
            .pathMapping("/app1"); // App2同理改为/app2
}

4. 验证配置并重启服务

  • 进入HTTPD安装目录的bin文件夹,打开命令行执行:
httpd -t

检查配置语法是否正确,无报错再重启服务:

httpd -k restart
  • 现在访问http://yourdomain.com/app1/swagger-ui.html(Swagger 3.x用/swagger-ui/index.html)和http://yourdomain.com/app2/swagger-ui.html即可正常打开文档

额外排查点

  • 如果仍无法访问,查看HTTPD的错误日志(logs/error.log),这才是HTTPD的日志,别再看Tomcat的catalina日志了
  • 确认远程Spring Boot应用的防火墙允许HTTPD服务器的IP访问
  • 再次验证本地DNS解析yourdomain.com确实指向HTTPD服务器的IP

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 03:37:09