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();
    }
  • 相关阅读:
    Docker ntpdate Permition error
    Sublime+Golang Plugin
    顺序表和链表的区别
    Python 性能优化——对象绑定
    Fix git 提交代码错误
    UVa 10523
    UVa 10551
    UVa 10814
    UVa 10925
    Practice Round China New Grad Test 2014 报告
  • 原文地址:https://www.cnblogs.com/wenhui92/p/7594493.html
Copyright © 2011-2022 走看看