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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Nginx 请求压缩的实现(动态压缩,静态压缩)

    Nginx 请求压缩的实现(动态压缩,静态压缩)

    本文主要介绍了Nginx 请求压缩的实现(动态压缩,静态压缩),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • nginx 502、413和404错误原因排查和解决办法总结

    nginx 502、413和404错误原因排查和解决办法总结

    这篇文章主要给大家介绍了NGINX 502错误排查,办法总结,Nginx 413错误的排查以及Nginx 400错误排查,文中通过代码示例给出了详细的排查方法和解决方案,需要的朋友可以参考下
    2023-12-12
  • Nginx定义域名访问方式

    Nginx定义域名访问方式

    这篇文章主要介绍了Nginx定义域名访问方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Nginx内存占用过高排查与处理过程

    Nginx内存占用过高排查与处理过程

    Nginx内存使用率过高就像是一场暴风雨,会给我们的网站和应用带来不小的麻烦,但只要我们能够冷静分析,找出问题的根源,对症下药,就一定能够化解危机,所以本文给大家介绍了Nginx内存占用过高排查与处理过程,需要的朋友可以参考下
    2025-08-08
  • Nginx启用GZIP压缩网页传输方法(推荐)

    Nginx启用GZIP压缩网页传输方法(推荐)

    Gzip压缩我很早已经就启用了,不过从未与大家分享过。今天小编给大家分享Nginx启用GZIP压缩网页传输方法,需要的朋友参考下吧
    2017-01-01
  • 详解nginx静态资源服务器简单配置

    详解nginx静态资源服务器简单配置

    这篇文章主要介绍了详解nginx静态资源服务器简单配置,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Nginx设置https和http同时使用同一个端口访问

    Nginx设置https和http同时使用同一个端口访问

    本文主要介绍了Nginx通过8070端口同时支持HTTP和HTTPS的配置方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-05-05
  • Nginx如何安装配置Lua支持

    Nginx如何安装配置Lua支持

    这篇文章主要介绍了Nginx如何安装配置Lua支持方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • 详解Nginx Location配置

    详解Nginx Location配置

    本篇文章给大家分享了Nginx Location配置的相关步骤以及具体方法,有需要的朋友参考学习下。
    2018-05-05
  • Nginx之rewrite实现URL重写方式

    Nginx之rewrite实现URL重写方式

    文章介绍了Nginx的rewrite模块,包括其重要性、相关指令(如set、if、break、return、rewrite)的使用方法和作用域,并举例说明了这些指令的实际应用场景,如域名重定向和防盗链处理
    2025-03-03

最新评论