代理背后的servlet:获取未代理的URL

Geo*_*old 2 java wicket servlets mod-proxy

Servlet规范,Tomcat或Wicket中是否有任何允许在mod_proxy后面运行的webapp来确定请求的非代理URL

我们需要发送带有链接的电子邮件.我一直在使用以下Wicket来构建应用程序中特定页面的URL:

String relURL = RequestCycle.get().getRequest().getRelativePathPrefixToWicketHandler();
RequestUtils.toAbsolutePath(relURL);
Run Code Online (Sandbox Code Playgroud)

由于电子邮件不会通过代理返回,当然URL不会被重写,最终看起来像http://localhost/....

现在,我能做的最好的事情就是将URL硬编码到我们的生产服务器上,但是这会让我们在开发/测试机器上运行时遇到一些调试问题.

使用InetAddress.getLocalHost().getHostName()并不是真正的解决方案,因为这可能会返回prod1.mydomain.com或者某些,而不是mydomain.dom请求可能来自哪个.

小智 5

正如在mod_proxy重定向上保留原始请求URL的问题所解答的那样:

如果您正在运行Apache> = 2.0.31,那么您可能会尝试按照此处所述设置ProxyPreserveHost指令.

这应该将原始主机头通过mod_proxy传递到您的应用程序中,并且通常使用Host头在那里(在您的Servlet容器中)重建请求URL,因此应该使用来自"之前"的主机和路径信息来构建架构位置代理人.