如何在httpd proxypass后面的EL spring-boot页面中获取原始请求URI

时间:2015-03-11 02:13:08

标签: apache spring-boot el proxypass embedded-tomcat-7

我有一个带有嵌入式tomcat的spring-boot web应用程序,在端口28081上运行,httpd配置为代理,如下所示:

ProxyPass / http://localhost:28081/
ProxyPassReverse / http://localhost:28081/

然后在jsp页面中,我需要将完整的请求URL传递给silverlight小部件;但是

${pageContext.request.serverName}:${pageContext.request.serverPort}

将解析为http://localhost:28081

所以我认为依赖X-Forwarded-Host,但有时它确实包含多个代理地址,用逗号分隔。我不确定相信地址的顺序是否会被保留是安全的。

有没有更好的方法来做到这一点,在jsp,httpd配置或控制器代码中?

2 个答案:

答案 0 :(得分:4)

在控制器中,您可以使用ServletUriComponentsBuilder:从请求初始化它,它会选择代理标头并为您构建源的URI,例如String uri = ServletUriComponentsBuilder.fromCurrentRequest().build().toString()

答案 1 :(得分:0)

您可以在httpd配置中使用ProxyPreserveHost来保留原始Host标题,即您的外向域名,但我想不出通过该端口的好方法。