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


Posted in Servers onSeptember 25, 2021

获取ip工具

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

import javax.servlet.http.HttpServletRequest;

/**
 * IP地址
 *
 * @date 2020年3月6日 下午12:57:02
 */
@Slf4j
public class IPUtils {

    /**
     * 获取IP地址
     * 
     * 使用Nginx等反向代理软件, 则不能通过request.getRemoteAddr()获取IP地址
     * 如果使用了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP地址,X-Forwarded-For中第一个非unknown的有效IP字符串,则为真实IP地址
     */
    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地址问题内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
Nginx+Tomcat实现负载均衡、动静分离的原理解析
Mar 31 Servers
提升Nginx性能的一些建议
Mar 31 Servers
Nginx 根据URL带的参数转发的实现
Apr 01 Servers
使用nginx配置访问wgcloud的方法
Jun 26 Servers
nginx共享内存的机制详解
Mar 21 Servers
Kubernetes中Deployment的升级与回滚
Apr 01 Servers
nginx容器方式反向代理实战
Apr 18 Servers
KVM基础命令详解
Apr 30 Servers
Win2008系统搭建DHCP服务器
Jun 25 Servers
nginx访问报403错误的几种情况详解
Jul 23 Servers
windows系统搭建WEB服务器详细教程
Aug 05 Servers
Fluentd搭建日志收集服务
Sep 23 Servers
关于nginx 实现jira反向代理的问题
Windows下用Nginx配置https服务器及反向代理的问题
Sep 25 #Servers
nginx安装以及配置的详细过程记录
Sep 15 #Servers
Nginx缓存设置案例详解
Sep 15 #Servers
图文详解Nginx版本平滑升级方案
Sep 15 #Servers
Nginx配置文件详解以及优化建议指南
Sep 15 #Servers
学习nginx基础知识
You might like
php提交表单发送邮件的方法
2015/03/20 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
PHP手机号码及邮箱正则表达式实例解析
2020/07/11 PHP
IE中jscript/javascript的条件编译
2006/09/07 Javascript
JavaScript 异步方法队列链实现代码分析
2010/06/05 Javascript
Struts2的s:radio标签使用及用jquery添加change事件
2013/04/08 Javascript
什么是cookie?js手动创建和存储cookie
2014/05/27 Javascript
简介JavaScript中setUTCSeconds()方法的使用
2015/06/12 Javascript
javascript嵌套函数和在函数内调用外部函数的区别分析
2016/01/31 Javascript
JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题如何解决
2016/11/11 Javascript
vue.js语法及常用指令
2017/10/29 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
vue.js使用watch监听路由变化的方法
2018/07/08 Javascript
vue在线动态切换主题色方案
2020/03/26 Javascript
vue proxy 的优势与使用场景实现
2020/06/15 Javascript
[02:52]2014DOTA2西雅图国际邀请赛 CIS战队巡礼
2014/07/07 DOTA
[01:18:31]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第一场 1月10日
2021/03/11 DOTA
零基础写python爬虫之使用Scrapy框架编写爬虫
2014/11/07 Python
分析在Python中何种情况下需要使用断言
2015/04/01 Python
python 列表降维的实例讲解
2018/06/28 Python
python绘制漏斗图步骤详解
2019/03/04 Python
详解python深浅拷贝区别
2019/06/24 Python
详解基于python-django框架的支付宝支付案例
2019/09/23 Python
Django 删除upload_to文件的步骤
2020/03/30 Python
澳大利亚领先的孕妇服装品牌:Mamaway
2018/08/14 全球购物
美国家居装饰和豪华家具购物网站:One Kings Lane
2018/12/24 全球购物
来自世界各地的饮料:Flavourly
2019/05/06 全球购物
英国运动服、设备及配件网站:DW Sports
2019/12/04 全球购物
函授本科毕业生自我鉴定
2013/10/16 职场文书
光盘行动倡议书
2014/02/02 职场文书
市场营销专业大学生职业生涯规划文
2014/03/06 职场文书
春风行动实施方案
2014/03/28 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
个人对照检查材料思想汇报(四风问题)
2014/09/25 职场文书
房产销售员2015年终工作总结
2015/10/22 职场文书
浅析Python实现DFA算法
2021/06/26 Python