我有一个带有嵌入式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配置或控制器代码中?
答案 0 :(得分:4)
在控制器中,您可以使用ServletUriComponentsBuilder
:从请求初始化它,它会选择代理标头并为您构建源的URI,例如String uri = ServletUriComponentsBuilder.fromCurrentRequest().build().toString()
。
答案 1 :(得分:0)
您可以在httpd配置中使用ProxyPreserveHost
来保留原始Host
标题,即您的外向域名,但我想不出通过该端口的好方法。