我正在为客户建立一个项目演示。在我的服务器上,我有很多使用不同技术构建的站点,这些站点在不同端口的不同服务器下运行。我正在使用nginx作为所有这些的反向代理。这个特定的应用程序是用Java(spring MVC / Blazeds)构建的,将在tomcat 6下进行演示(可能也在生产中)。Nginx用作反向代理时有一个不错的设置,使它能够在X-REAL- IP标头中传递原始请求的IP地址。我要做的是设置我的应用程序或至少将tomcat设置为将X-REAL-IP标头视为真实请求IP地址。这可能吗?
这取决于您所说的“真实请求IP”。如果您谈论的request.getRemoteAddr()是从中返回的值,那么可以。 做到这一点的方法是建立一个Servlet过滤器在Web应用程序,将拦截(您想X-REAL- IP返回或仅的)所有的URL,并有过滤套传入的请求到后代的HttpServletRequestWrapper这将覆盖getRemoteAddr()以返回X- REAL-IP值。
request.getRemoteAddr()
HttpServletRequestWrapper
getRemoteAddr()