栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > 服务器

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

服务器 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

解决使用了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地址问题内容请搜索考高分网以前的文章或继续浏览下面的相关文章希望大家以后多多支持考高分网!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/698101.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号