in the JSP, the method to obtain the IP address of the client is: Request.getremoteaddr (), which is valid in most cases. However, after passing the reverse proxy software such as Apache,squid,nginx, due to the addition of the middle tier between the client and the service, So the IP that the Request.getremoteaddr () method obtains is actually the address of the proxy server, not the IP address of the client.
However, the x-forwarded-for information is added to the HTTP header information of the forwarding request. Used to track the original client IP address and the server address of the original client request.
Package com.rapido.utils; Import Javax.servlet.http.HttpServletRequest; /** * Custom Access Object Tool class * * Get information such as IP address of object * @author X-rapido * */public class Cusaccessobjectutil {/** * Get the real IP address of the user, Do not use REQUEST.GETREMOTEADDR (), the reason is that it is possible for the user to use the proxy software to avoid the real IP address, * However, if through the multi-level reverse proxy, the value of x-forwarded-for is more than one, but a string of IP values, What exactly is the real IP of the client? * The answer is to take the first non-unknown valid IP string in x-forwarded-for. * * such as: x-forwarded-for:192.168.1.110, 192.168.1.120, 192.168.1.130, * 192.168.1.100 * * User real IP: 192.168.1.110 * * @param request * @return */public static string getipaddress (HttpServletRequest request) {string IP = Request.getheader ("X-forwarded-for"); if (IP = = NULL | | ip.length () = = 0 | | "Unknown". Equalsignorecase (IP)) {IP = request.getheader ("Proxy-client-ip"); if (IP = = NULL | | ip.length () = = 0 | | "Unknown". Equalsignorecase (IP)) {IP = request.getheader ("Wl-proxy-client-ip"); if (IP = = NULL | | ip.length () = = 0 | | "Unknown". Equalsignorecase (ip) {IP = request.getheader ("Http_client_ip"); if (IP = = NULL | | ip.length () = = 0 | | "Unknown". Equalsignorecase (IP)) {IP = request.getheader ("Http_x_forwarded_for"); if (IP = = NULL | | ip.length () = = 0 | | "Unknown". Equalsignorecase (IP)) {IP = request.getremoteaddr (); } return IP; } }
The above describes the Java get really IP address method, including the aspects of the content, I hope the PHP tutorial interested in a friend helpful.