Apache Tomcat是否阻止客户端IP地址?

时间:2014-09-19 10:25:46

标签: java apache tomcat java-ee servlets

我已经在具有IP地址10.xx.xx.90的计算机上的Tomcat 6.0上部署了我的Web应用程序。然后我从具有IP地址(10.xx.xx.56)的m / c发出一个http请求(从浏览器)到这个应用程序。

我试图使用下面的代码在servlet过滤器中获取客户端(10.xx.xx.56)的IP地址。但是我没有在头信息中获取remoteaddress参数的任何值,并且request.getRemoteAddr()返回部署应用程序的计算机的IP地址,即10.xx.xx.90。中间没有负载均衡器或代理。

public void doFilter(ServletRequest request, ServletResponse response, FilterChain    chain) throws IOException,
  ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
StringBuffer ipLog = new StringBuffer("FILTER_LOG").append(httpServletRequest.getRemoteAddr());
Enumeration<String> e = httpServletRequest.getHeaderNames();
if (e != null) {
  while (e.hasMoreElements()) {
    String header = e.nextElement();
    ipLog.append(header).append(" - ").append(httpServletRequest.getHeader(header));
  }
}
System.out.println(ipLog);

Tomcat是否阻止或更改客户端IP地址?如果是,那么我需要更改哪些配置才能获得真实的客户端IP地址?

提前致谢..

1 个答案:

答案 0 :(得分:0)

您实际上是通过代理连接

正如对此问题的评论中所述,客户端通过隧道连接到服务器,这意味着对服务器执行实际请求的客户端是隧道的服务器端。

这就是为什么你将本地IP作为&#34; remoteAddr&#34;

让Tomcat监听公共接口或所有接口,并直接连接到服务器IP,而不是通过隧道。