/** *
* Web 服务器反向代理中用于存放客户端原始 IP 地址的 Http header 名字 *
*/ private static final String[] PROXY_REMOTE_IP_ADDRESS = { "X-Forwarded-For", "X-Real-IP" }; /** ** 获取请求的客户端的 IP 地址。若应用服务器前端配有反向代理的 Web 服务器, * 需要在 Web 服务器中将客户端原始请求的 IP 地址加入到 HTTP header 中。 * 详见 {@link #PROXY_REMOTE_IP_ADDRESS} *
*/ public String getRemoteIp( HttpServletRequest request ) { for ( int i = 0 ; i < PROXY_REMOTE_IP_ADDRESS.length ; i++ ) { String ip = request.getHeader( PROXY_REMOTE_IP_ADDRESS[i] ); if ( ip != null && ip.trim().length() > 0 ) { return getRemoteIpFromForward( ip.trim() ); } } return request.getRemoteAddr(); }