解决使用了nginx获取IP地址都是127.0.0.1 的问题

解决使用了nginx获取IP地址都是127.0.0.1 的问题,第1张

解决使用了nginx获取IP地址都是127.0.0.1 的问题

获取ip工具

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

import javax.servlet.http.HttpServletRequest;


@Slf4j
public class IPUtils {

    
    public static String getIpAddr(HttpServletRequest request) {
 String ip = null;
 try {
     ip = request.getHeader("x-forwarded-for");
     if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
  ip = request.getHeader("Proxy-Client-IP");
     }
     if (StringUtils.isEmpty(ip) || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  ip = request.getHeader("WL-Proxy-Client-IP");
     }
     if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
  ip = request.getHeader("HTTP_CLIENT_IP");
     }
     if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
  ip = request.getHeader("HTTP_X_FORWARDED_FOR");
     }
     if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
  ip = request.getRemoteAddr();
     }
 } catch (Exception e) {
     log.error("IPUtils ERROR ", e);
 }
 
 //使用代理,则获取第一个IP地址
 if(StringUtils.isEmpty(ip) && ip.length() > 15) {
     if(ip.indexOf(",") > 0) {
  ip = ip.substring(0, ip.indexOf(","));
     }
 }
 
 return ip;
    }
    
}

如果你使用了nginx 则获取到的ip都会是127.0.0.1

在代理中加入如下配置proxy_set_header x-forwarded-for $remote_addr;

server {
 listen   80;
 server_name     api.qimen.pro;
 # 服务器文件上传大小限制
 client_max_body_size 10M;
 location / {
     proxy_pass   http://gymserver;
     proxy_set_header x-forwarded-for  $remote_addr;
 }
    }

到此这篇关于解决使用了nginx获取IP地址都是127.0.0.1 的问题的文章就介绍到这了,更多相关nginx获取IP地址问题内容请搜索考高分网以前的文章或继续浏览下面的相关文章希望大家以后多多支持考高分网!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5698234.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存