解决使用了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 配置 proxy_pass 后 返回404问题
Mar 31 Servers
nginx处理http请求实现过程解析
Mar 31 Servers
如何在centos上使用yum安装rabbitmq-server
Mar 31 Servers
Nginx下配置Https证书详细过程
Apr 01 Servers
Nginx工作原理和优化总结。
Apr 02 Servers
windows下快速安装nginx并配置开机自启动的方法
May 11 Servers
图文详解nginx日志切割的实现
Jan 18 Servers
Nginx设置HTTPS的方法步骤 443证书配置方法
Mar 21 Servers
详解使用内网穿透工具Ngrok代理本地服务
Mar 31 Servers
微信告警的zabbix监控系统 监控整个NGINX集群
Apr 18 Servers
Linux中文件的基本属性介绍
Jun 01 Servers
windows server2012 R2下安装PaddleOCR服务的的详细步骤
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
2020显卡排行榜天梯图 显卡天梯图2020年3月最新版
2020/04/02 数码科技
使用MaxMind 根据IP地址对访问者定位
2006/10/09 PHP
Drupal简体中文语言包安装教程
2014/09/27 PHP
如何批量清理系统临时文件(语言:C#、 C/C++、 php 、python 、java )
2016/02/01 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
2016/02/27 PHP
js实现的仿新浪微博完美的时间组件升级版
2011/12/20 Javascript
js变换显示图片的实例
2013/04/16 Javascript
javascript函数定义的几种区别小结
2014/01/06 Javascript
JS获得图片alt信息的方法
2015/04/01 Javascript
纯javascript实现自动发送邮件
2015/10/21 Javascript
深入理解JavaScript中的预解析
2017/01/04 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
2017/01/16 Javascript
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
2017/02/08 Javascript
AngularJS中filter的使用实例详解
2017/08/25 Javascript
微信小程序的生命周期的详解
2017/10/19 Javascript
Node.JS段点续传:Nginx配置文件分段下载功能的实现方法
2018/03/12 Javascript
javaScript把其它类型转换为Number类型
2019/10/13 Javascript
解决vue更新路由router-view复用组件内容不刷新的问题
2019/11/04 Javascript
非常漂亮的js烟花效果
2020/03/10 Javascript
Postman内建变量常用方法实例解析
2020/07/28 Javascript
详解JavaScript 中的批处理和缓存
2020/11/19 Javascript
[50:44]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第二场 2月22日
2021/03/11 DOTA
Python3操作Excel文件(读写)的简单实例
2019/09/02 Python
基于Python+Appium实现京东双十一自动领金币功能
2019/10/31 Python
python中温度单位转换的实例方法
2020/12/27 Python
解决html5中video标签无法播放mp4问题的办法
2017/05/07 HTML / CSS
CheapTickets香港机票预订网站:CheapTickets.hk
2019/06/26 全球购物
BIFFI美国站:意大利BIFFI BOUTIQUES豪华多品牌时装零售公司
2020/02/11 全球购物
校长岗位职责
2013/11/26 职场文书
护理学应聘自荐书范文
2014/02/05 职场文书
《夸父追日》教学反思
2014/02/26 职场文书
大班幼儿评语大全
2014/04/30 职场文书
建筑专业毕业生自荐信
2014/05/25 职场文书
预备党员综合考察材料
2014/05/31 职场文书
教师节主题班会方案
2015/08/17 职场文书
2016年感恩母亲节活动总结
2016/04/01 职场文书