美文网首页nginx运维方案
获取客户端真实IP

获取客户端真实IP

作者: 岑吾 | 来源:发表于2021-12-08 17:39 被阅读0次

在Java网站服务器中,要获取客户端的真实IP,一般有二种情况。

一、客户端直连服务器

如果客户端直接连接服务器这些情况时最简单了,直接使用HttpServletRequest 中的 getRemoteAddr(); 方法就可以获取到客户端的真实IP了。

二、通过Nginx、Apache等转发

首先需要配置转发服务器,在Header中添加X-Forwarded-For参数。

Nginx配置

在nginx配置中,找到要转发的location中添加 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:8080/;
    }

Apache配置

在http.conf添加配置

RemoteIPHeader x-forwarded-for

这样设定好转发之后,X-Forwarded-For的值为一个或多个ip,用','分割,每次转发都会将源ip添加到最后,只要取第一个ip值就是客户端的真实IP了。

java代码

将上次两种情况合并一下

public static String getIp(HttpServletRequest request) {
        if (request == null){
            return "";
        }

        String xForward = request.getHeader("X-Forwarded-For");
        if (xForward == null) {
            return request.getRemoteAddr();
        }

        String ip = "";
        String[] ipArr = xForward.split(",");
        if (ipArr.length > 0) {
            ip = ipArr[0];
        }

        return ip;
    }

相关文章

  • 【充电】《Nginx核心知识100讲》postread阶段:获取

    50 | postread阶段:获取真实客户端地址的realip模块 获取真实用户IP地址 realip模块可以帮...

  • Nginx 之 X-Forwarded-For 中首个IP一定真

    欢迎访问陈同学博客原文 使用 Nginx 基于客户端IP进行限流时,需在代理中拿到客户端真实IP。获取IP方式有多...

  • 获取客户端真实ip

    location /gameExchange { proxy_set_header X-Real-IP...

  • 获取客户端真实IP

    在Java网站服务器中,要获取客户端的真实IP,一般有二种情况。 一、客户端直连服务器 如果客户端直接连接服务器这...

  • java获取真实ip工具类

    场景 有的时候我们需要获取客户端的真实ip,用来实现ip白名单,和黑名单的配置! ip工具类如下

  • java获取客户端ip

    java获取客户端ip 在开发工作中,我们常常需要获取客户端的IP。一般获取客户端的IP地址的方法是:reques...

  • 79笔记

    在会员服务中直接从Request获取请求来源,获取的为网关的服务的ip,并不是最终真实的客户端ip。解决办法:Ng...

  • 服务器如何获取请求IP

    转载于:叉叉哥Jetty/Tomcat + Nginx反向代理获取客户端真实IP、域名、协议、端口 利用X-For...

  • Python获取客户端IP地址

    获取客户端IP地址

  • js获取客户端真实IP

    java获取客户端程序本身还有对应的对象来实现。而js却不行。搜罗了一些资料,发现比较全而好的前端获取客户端IP的...

网友评论

    本文标题:获取客户端真实IP

    本文链接:https://www.haomeiwen.com/subject/cfvtfrtx.html