为Spring生成的url设置基本url

为Spring生成的url设置基本url,spring,spring-hateoas,Spring,Spring Hateoas,我们有一个使用spring运行的restful api,它生成HATEOAS链接。当我在本地运行服务时,它们生成得很好,但是在我们的服务器上,它在apache后面托管tomcat,apache将应用程序代理到/api/(在本地,它只是在/)上运行),URL仍然像应用程序在/(上运行)上一样生成 有没有办法告诉spring在生成这些文件时使用基本url?我已经解决了我的问题。斯普林没有错。在构建链接时,spring使用X-Forwarded-Host、X-Forwarded-Ssl等,以及自4.1

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


有没有办法告诉spring在生成这些文件时使用基本url?

我已经解决了我的问题。斯普林没有错。在构建链接时,spring使用X-Forwarded-Host、X-Forwarded-Ssl等,以及自4.1.3以来的X-Forwarded-Prefix来正确构建将由代理转发的URL。但是,代理时apache不会自动设置最后一个,因此安装mod_头并将
RequestHeader set X-Forwarded-Prefix“api”
添加到我的LocationMatch指令解决了所有问题

最简单的方法是更改应用程序的上下文路径以匹配公共API路径。第二种选择是使用类似于
mod_substitute
的东西来正则化所有响应。我尝试设置server.contextPath=“/api/”,但这只是使生产服务器在/api/api/上为所有内容服务。如果您的上下文路径是
/api/
,那么apache应该代理到
/api/
,不要在tomcat上使用
/
。我找到了解决方案,将在下面发布。非常好,在这一重大事件中为我节省了时间。我需要添加一个前导斜杠,例如
RequestHeader set X-Forwarded-Prefix”/api“