0

我在 Apache 上运行 Java 应用程序。我正在尝试找到一种方法让我的应用服务器代码知道 Web 服务器的主机名。有没有办法做到这一点?

跑步

InetAddress addr = InetAddress.getLocalHost();
String hostname = addr.getHostName();

或者

(HttpServletResponse)response.getHeader("Host");

两者都可以预见地产生应用服务器的主机名。

4

2 回答 2

0

我已经通过几种方式处理了这个问题:

  1. 通过系统属性明确告诉应用应该使用什么主机名
  2. 在 Apache 中有一个重写规则,为请求添加一个标头,例如 X-originally-For
  3. X-Forwarded-For从请求中读取标头

注意:我不是特别喜欢#3。由于 XFF 标头是通过主机传递给主机的,因此您不能信任您无法控制的主机添加的地址。

于 2013-07-01T20:43:08.153 回答
0

很大程度上取决于您的网络服务器的配置,但我发现在 JBoss 前面使用 Apache,getRemoteHost返回了 Web 服务器的地址。

可能值得一试

于 2013-07-01T20:21:00.490 回答