为 Spring 生成的 url 设置基数 url

Setting a base url for urls generated by Spring

我们有一个 restful api 运行ning 使用 spring 生成 HATEOAS 链接。当我在本地 运行 服务时,它们生成得很好,但在我们的服务器上,它在 apache 后面托管 tomcat ,它代理应用程序到 /api/ (本地它只是 运行 在 / 上),url 仍然像应用程序在 / 上 运行 一样生成。

有什么方法可以告诉 spring 在生成这些时使用基数 url 吗?

我已经解决了我的问题。 Spring 没有错。构建链接时,spring 使用 X-Forwarded-Host、X-Forwarded-Ssl 等,并且从 4.1.3 开始使用 X-Forwarded-Prefix 来正确构建将由代理转发的 url。然而,最后一个在代理时不会由 apache 自动设置,因此安装 mod_headers 并向我的 LocationMatch 指令添加 RequestHeader set X-Forwarded-Prefix "api" 解决了所有问题。