我正在为客户端设置项目演示。在我的服务器上,我有很多使用在不同端口上的不同服务器上运行的不同技术构建的站点。我使用nginx作为所有这些的反向代理。这个特定的应用程序是用java(spring MVC/Blazeds)构建的,并且将在tomcat 6下部署用于演示(可能也在生产中)。作为反向代理使用时,Nginx具有很好的设置,使其能够在X-REAL-IP头中传递原始请求的IP地址。我想要做的是设置我的应用程序或至少tomcat将X-REAL-IP标头作为真正的请求IP地址。这可能吗?有关java web应用程序和X-REAL-IP标题的问题
0
A
回答
3
这取决于你的意思是“真正的请求IP”。如果你正在谈论从request.getRemoteAddr()
返回的价值,那么是的,这是可能的。
这样做的方法是在您的Web应用程序中设置一个拦截所有URL(或仅限您希望X-REAL-IP返回的URL)的servlet过滤器,并让该过滤器将传入的请求包装为后代的HttpServletRequestWrapper
,它将覆盖getRemoteAddr()
以返回X-REAL-IP值。
0
为此,您可以使用Tomcat的RemoteIpValve
<Valve className="org.apache.catalina.valves.RemoteIpValve"
remoteIpHeader="X-REAL-IP"
requestAttributesEnabled="true"
internalProxies="127.0.0.1" />
这样一来,当你调用request.getRemoteAddr()
,它将提供正确的信息。顺便说一句,您可能想要使用更标准的标题,即X-Forwarded-For
。
相关问题
- 1. 有关GWT和其他“Web应用程序框架”的问题
- 2. Java Web应用程序性能问题
- 3. Java Web应用程序同步问题
- 4. Web应用程序:路径有问题?
- 5. 关于Spring DM,OSGi和web应用程序的问题
- 6. Java应用程序问题
- 7. Java Web应用程序中的JSTL和JSP问题
- 8. iOS应用程序设计问题和相关的UIImagePickerController问题
- 9. 小应用程序Web部署问题
- 10. Web应用程序架构的问题
- 11. NetBeans中的Web应用程序问题
- 12. Web应用程序的问题
- 13. Web应用程序结构hierarcy问题
- 14. 从web应用程序调用应用程序时的问题
- 15. 问题:www.domain.com/rails上的form_for和rails应用程序有问题
- 16. 具有Apple-Mobile-Web-app-capable的iOS Web应用程序问题
- 17. C#Web应用程序问题
- 18. ASP.NET Web应用程序会话问题
- 19. Web应用程序时区问题
- 20. Android Web应用程序问题
- 21. 关于Visual Studio 2010内置的web应用程序的问题
- 22. 关于在c#web应用程序中的会话的问题
- 23. 部署问题asp.net web应用程序
- 24. Web应用程序发布问题
- 25. Spring 3.1 web应用程序问题
- 26. IIS问题,Web应用程序
- 27. PhoneGap的应用程序关闭问题
- 28. Android关闭应用程序的问题?
- 29. 关闭iPhone应用程序的问题
- 30. 关于应用程序ID的问题
使用HttpServletRequestWrapper在技术上并不亲切 - 您可以自由地扩展任何内容,但它非常易于使用。是的,过滤器就是这里的答案 - 它可以移植到任何应用程序容器上(只要X-REAL-IP标头在该容器中发送并接受) – MetroidFan2002 2009-07-27 03:09:25