一尘不染

有关Java Web应用程序和X-REAL-IP标头的问题

tomcat

我正在为客户建立一个项目演示。在我的服务器上,我有很多使用不同技术构建的站点,这些站点在不同端口的不同服务器下运行。我正在使用nginx作为所有这些的反向代理。这个特定的应用程序是用Java(spring
MVC / Blazeds)构建的,将在tomcat 6下进行演示(可能也在生产中)。Nginx用作反向代理时有一个不错的设置,使它能够在X-REAL-
IP标头中传递原始请求的IP地址。我要做的是设置我的应用程序或至少将tomcat设置为将X-REAL-IP标头视为真实请求IP地址。这可能吗?


阅读 236

收藏
2020-06-16

共1个答案

一尘不染

这取决于您所说的“真实请求IP”。如果您谈论的request.getRemoteAddr()是从中返回的值,那么可以。
做到这一点的方法是建立一个Servlet过滤器在Web应用程序,将拦截(您想X-REAL-
IP返回或仅的)所有的URL,并有过滤套传入的请求到后代的HttpServletRequestWrapper这将覆盖getRemoteAddr()以返回X-
REAL-IP值。

2020-06-16