所有请求似乎都来自127.0.0.1,使用Azure上的Tomcat

时间:2015-07-14 07:49:54

标签: java tomcat azure

我正在使用Azure的Web App服务并运行Tomcat实例。我想限制通过IP访问管理器应用程序,这很容易设置,但是有一个问题,根据Tomcat所有请求(远程和本地)似乎来自127.0.0.1。 Azure中是否有任何方法可以确保正确设置X-Forwarded-For标头?

1 个答案:

答案 0 :(得分:2)

由于Azure负载平衡,Azure网站实例似乎可以从127.0.0.1获取请求。因此我们可以使用“X-Forwarded-For”来获取IP 如果请求包含X-Forwarded-For标头,则其中的第一个IP应该是我们要查找的标识符,“x-forwarded-for”被认为是事实上的标准,但是,如果客户端存在于专用网络上并通过NAT网关连接到互联网,您将获得NAT服务器的IP,而不是客户端,有关X-Forwarded-For的更多信息,请参阅https://en.wikipedia.org/wiki/X-Forwarded-For。请尝试使用以下代码获取客户端IP。

      String ip = request.getHeader("X-FORWARDED-FOR");  
      if (ip == null) {  
         ip = request.getRemoteAddr();  
      }

您可以看到此test result.