目前大部分獲取ip的方式:beat.getRequest().getRemoteAddr()
可是,若是經過nginx反向代理的話,就獲取不到真實ip,是獲取的nginx的ip
html
須要:添加 proxy_set_header X-Real-IP $remote_addr; nginx
server { listen 80; server_name price.kuche.com; location / { root html; proxy_set_header X-Real-IP $remote_addr; proxy_pass http:backServers; } }
添加一個表頭聲明
而後這樣取spa
public static String getRemoteAddrIp(HttpServletRequest request) { String ipFromNginx = getHeader(request, "X-Real-IP"); System.out.println("ipFromNginx:" + ipFromNginx); System.out.println("getRemoteAddr:" + request.getRemoteAddr()); return StringUtil.isEmpty(ipFromNginx) ? request.getRemoteAddr() : ipFromNginx; } private static String getHeader(HttpServletRequest request, String headName) { String value = request.getHeader(headName); return !StringUtils.isBlank(value) && !"unknown".equalsIgnoreCase(value) ? value : ""; }