我在 Apache 上运行 Java 应用程序。我正在尝试找到一种方法让我的应用服务器代码知道 Web 服务器的主机名。有没有办法做到这一点?
跑步
InetAddress addr = InetAddress.getLocalHost();
String hostname = addr.getHostName();
或者
(HttpServletResponse)response.getHeader("Host");
两者都可以预见地产生应用服务器的主机名。
我在 Apache 上运行 Java 应用程序。我正在尝试找到一种方法让我的应用服务器代码知道 Web 服务器的主机名。有没有办法做到这一点?
跑步
InetAddress addr = InetAddress.getLocalHost();
String hostname = addr.getHostName();
或者
(HttpServletResponse)response.getHeader("Host");
两者都可以预见地产生应用服务器的主机名。
我已经通过几种方式处理了这个问题:
X-Forwarded-For
从请求中读取标头注意:我不是特别喜欢#3。由于 XFF 标头是通过主机传递给主机的,因此您不能信任您无法控制的主机添加的地址。
很大程度上取决于您的网络服务器的配置,但我发现在 JBoss 前面使用 Apache,getRemoteHost
返回了 Web 服务器的地址。
可能值得一试