java後臺獲取nginx代理實際用戶ip地址

java獲取ip地址:

    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.getHeader("X-Real-IP");  
        } 
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {  
            ip = request.getRemoteAddr();  
        }  
        return ip;  
    } 

nginx做修改:

server {
        listen       8100;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        root   html/dist;

        location / {
            try_files $uri $uri/ @router;
            index  index.html index.htm;


        }

        location @router {
            rewrite ^.*$ /index.html last;
        }
		
		#設置proxy_set_header值,後端可以根據“ X-Forwarded-For”或“X-real-ip”獲取客戶端實際ip地址
        location /api/{
            proxy_pass  http://localhost:9001/myWeb/; 
						
			proxy_redirect              off;
 
			proxy_set_header            Host $host;
 
			proxy_set_header            X-real-ip $remote_addr;
 
			proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        
    }

 X-real-ip和 X-Forwarded-For $proxy_add_x_forwarded_for設置都可以獲取真實的ip地址,具體區別參閱如下鏈接:

https://blog.csdn.net/u010020099/article/details/82110988

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章