nginx获取真实的ip的方法

 更新时间:2023年08月15日 15:59:13   作者:广铁小多多  
在实际应用中,我们可能需要获取用户的ip地址,比如做异地登陆的判断等等,本文主要介绍了nginx获取真实的ip的方法,具有一定的参考价值,感兴趣的可以了解一下

我这里使用是springboot项目,使用nginx做代理,但header里面的参数没有将ip带过来,所有需要配置nginx将ip带过来。

nginx.conf文件

server {
    listen       80;
    listen       443 ssl;
    server_name  xxx.xxx.com;
    ssl_certificate  /web/project/ai-master/ssl/xxx.xxx.com_bundle.pem;
    ssl_certificate_key  /web/project/ai-master/ssl/xxx.xxx.com.top.key;
    #接口
    location /api {
        #保留代理之前的host 包含客户端真实的域名和端口号
        proxy_set_header    Host  $host;
        #保留代理之前的真实客户端ip
        proxy_set_header    X-Real-IP  $remote_addr;
        #这个Header和X-Real-IP类似,但它在多级代理时会包含真实客户端及中间每个代理服务器的IP
        proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
        #表示客户端真实的协议(http还是https)
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://aiMasterServer/api;
    }
}

RequestUtil.java文件

/**
 * @Description:请求处理类
 * @author: Adobe Chow
 * @date: 2019/4/25 10:42
 * @Copyright: www.winshang.com Inc. All rights reserved.
 */
public class RequestUtil {
    public static HttpServletRequest getRequest(){
        HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
        return request;
    }
    public static HttpServletResponse getResponse(){
        HttpServletResponse response = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getResponse();
        return response;
    }
    /***
     * 获取客户端IP地址;这里通过了Nginx获取;X-Real-IP,
     * @return
     */
    public static String getClientIP() {
        HttpServletRequest request = getRequest();
        String ip = request.getHeader("X-Real-IP");
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("X-Forwarded-For");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        return ip;
    }
}

到此这篇关于nginx获取真实的ip的方法的文章就介绍到这了,更多相关nginx获取真实ip内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • win10系统安装Nginx的详细步骤

    win10系统安装Nginx的详细步骤

    Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器,同时也提供了IMAP/POP3/SMTP服务,这篇文章主要介绍了win10系统安装Nginx的详细步骤,需要的朋友可以参考下
    2023-02-02
  • 网页502 Bad Gateway nginx/1.20.1报错的原因与解决方法

    网页502 Bad Gateway nginx/1.20.1报错的原因与解决方法

    502 bad gateway nginx/1.20.1 是一个错误提示,通常出现在访问网站时出现问题,这篇文章主要给大家介绍了关于网页502 Bad Gateway nginx/1.20.1报错的原因与解决方法,需要的朋友可以参考下
    2024-03-03
  • django8.5 项目部署Nginx的操作步骤

    django8.5 项目部署Nginx的操作步骤

    nginx是一个开源的,支持高性能,高并发的www服务和代理服务软件。它是一个俄罗斯人lgor sysoev开发的,作者将源代码开源出来供全球使用,下面小编给大家带来了django8.5 项目部署Nginx的操作步骤,感兴趣的朋友一起看看吧
    2022-01-01
  • 结合 Nginx 将 DoNetCore 部署到 阿里云的安装配置方法

    结合 Nginx 将 DoNetCore 部署到 阿里云的安装配置方法

    这篇文章主要介绍了结合 Nginx 将 DoNetCore 部署到 阿里云的方法 ,需要的朋友可以参考下
    2018-10-10
  • 分享最新版 nginx内置变量 大全

    分享最新版 nginx内置变量 大全

    在配置基于nginx服务器的网站时,必然会用到 nginx内置变量 ,下面笔者将它整理成列表,把最新版本的变量列出来,以方便做配置时查询
    2016-04-04
  • nginx 目录密码保护的设置方法

    nginx 目录密码保护的设置方法

    比如要对 网站目录下的 test 文件夹 进行加密认证
    2010-12-12
  • nginx结合keepalived实现高可用的完整步骤

    nginx结合keepalived实现高可用的完整步骤

    这篇文章主要给大家介绍了关于nginx结合keepalived实现高可用的完整步骤,文中通过示例代码介绍的非常详细,对大家学习或者使用nginx具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • nginx的location的优先级和匹配方式

    nginx的location的优先级和匹配方式

    location是Nginx中的块级指令,本文主要介绍了nginx的location的优先级和匹配方式,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • 深入探究Nginx体系化之虚拟主机分类及配置实现

    深入探究Nginx体系化之虚拟主机分类及配置实现

    Nginx,这款备受推崇的高性能 Web 服务器,以其强大的性能和灵活的配置而广受欢迎,在实际应用中,虚拟主机是一项重要的功能,允许我们在单个服务器上托管多个网站,本文将深入探讨 Nginx 虚拟主机的分类和配置实现,帮助您构建一个高效多站点托管平台
    2023-08-08
  • 详解Nginx服务器中配置Sysguard模块预防高负载的方案

    详解Nginx服务器中配置Sysguard模块预防高负载的方案

    这篇文章主要介绍了详解Nginx服务器中配置Sysguard模块预防高负载的方案,该模块由阿里巴巴的团队开发,能够设置负载阀值,比较强大,需要的朋友可以参考下
    2016-01-01

最新评论