zoukankan      html  css  js  c++  java
  • 服务器使用nginx做代理,通过HttpServletRequest获取请求用户真实IP地址

    在使用nginx做代理时,服务端如果直接从 X-Forwarded-For 头部获取来源IP,将获取到nginx所在的ip地址,而不是请求的真实ip地址。

    如何获取请求的真实IP地址

    首先,在nginx配置中添加如下配置

    server {
        listen       80;
        server_name  www.wenki.info;    #要访问的域名
    
        charset utf8;
    
        location / {
            proxy_pass       http://server;
            proxy_set_header Host      $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

    从nginx中将请求来源IP添加到代理请求头部,然后使用命令重新加载配置

    nginx -s reload

    服务端使用以下代码即可获取请求主机真实IP地址

    public static String realIP(HttpServletRequest request) {
        String xff = request.getHeader("x-forwarded-for");
        if (xff != null) {
            int index = xff.indexOf(',');
            if (index != -1) {
                xff = xff.substring(0, index);
            }
            return xff.trim();
        }
        return request.getRemoteAddr();
    }
  • 相关阅读:
    BCP 命令
    模板复习【updating】
    bzoj3716/4251 [PA2014]Muzeum
    bzoj4318 OSU!
    uoj308 【UNR #2】UOJ拯救计划
    bzoj4695 最假女选手
    省队集训 Day7 选点游戏
    hdu5828 Rikka with Sequence
    bzoj2482 [Spoj1557] Can you answer these queries II
    省队集训 Day6 序列
  • 原文地址:https://www.cnblogs.com/wenhui92/p/7594493.html
Copyright © 2011-2022 走看看