zoukankan      html  css  js  c++  java
  • Nginx与真实IP

    配置了Nginx,Tomcat中的Web程序,获得的ip一直是“127.0.0.1”,比较纳闷。
    获得远程ip,已经判断了很多情况,为什么会这样呢?


     正解
     proxy_set_header        Host    $host;
     proxy_set_header        X-Real-IP       $remote_addr;
     proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
     
     Java代码直接取:request.getRemoteAddr();

     再有Nginx等情况下,获得的地址不对,比如“127.0.0.1”。


    /**
     * 
     * @author fansunion@qq.com 2014年12月7日
     */
    public class IpUtil {
    public static String getRemoteIp(HttpServletRequest request) {
    String remoteIp = request.getHeader("x-forwarded-for");
    if (remoteIp == null || remoteIp.isEmpty()
    || "unknown".equalsIgnoreCase(remoteIp)) {
    remoteIp = request.getHeader("X-Real-IP");
    }
    if (remoteIp == null || remoteIp.isEmpty()
    || "unknown".equalsIgnoreCase(remoteIp)) {
    remoteIp = request.getHeader("Proxy-Client-IP");
    }
    if (remoteIp == null || remoteIp.isEmpty()
    || "unknown".equalsIgnoreCase(remoteIp)) {
    remoteIp = request.getHeader("WL-Proxy-Client-IP");
    }
    if (remoteIp == null || remoteIp.isEmpty()
    || "unknown".equalsIgnoreCase(remoteIp)) {
    remoteIp = request.getHeader("HTTP_CLIENT_IP");
    }
    if (remoteIp == null || remoteIp.isEmpty()
    || "unknown".equalsIgnoreCase(remoteIp)) {
    remoteIp = request.getHeader("HTTP_X_FORWARDED_FOR");
    }
    if (remoteIp == null || remoteIp.isEmpty()
    || "unknown".equalsIgnoreCase(remoteIp)) {
    remoteIp = request.getRemoteAddr();
    }
    if (remoteIp == null || remoteIp.isEmpty()
    || "unknown".equalsIgnoreCase(remoteIp)) {
    remoteIp = request.getRemoteHost();
    }
    if (remoteIp != null && remoteIp.indexOf(",") != -1) {
    remoteIp = remoteIp.substring(remoteIp.lastIndexOf(",") + 1,
    remoteIp.length()).trim();
    }
    return remoteIp;
    }
    }

  • 相关阅读:
    Linux随笔 DNS搭建
    总算亲自看见了一个网站被黑后的页面。
    [转]XP如何禁止媒体文件预览
    用Word2007发Blog的配置方法(多图)。
    C#通过http访问olap
    测试Word2007
    用IronPython作为.Net的脚本语言。
    用批处理写的显示磁盘剩余空间的小程序。
    事开机时Num Lock键打开。
    快捷方便的对js文件进行语法检查。
  • 原文地址:https://www.cnblogs.com/qitian1/p/6462863.html
Copyright © 2011-2022 走看看