zoukankan      html  css  js  c++  java
  • Nginx/Apache/Tomcat记录屏蔽真实IP

    记录客户端真实IP
    #Nginx示例
    log_format  upstream  '$time_iso8601 $http_x_forwarded_for $host $upstream_response_time $request $status $upstream_addr';

    #Apache示例
    SetEnvIf REMOTE_ADDR "(.+)" CLIENTIP=$1
    SetEnvIf X-Forwarded-For "^([0-9.]+)" CLIENTIP=$1
    LogFormat "%{CLIENTIP}e %D %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" trueip_combined

    Nginx/Apache/Tomcat记录屏蔽真实IP

    #PHP示例
    public static String getIpAddr(HttpServletRequest request) {
    String 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;
    }


    屏蔽客户端真实IP

    配置Apache屏蔽某源地址

    参考下面的内容修改配置文件:

    
    Order deny, allow
    
    SetEnvIf X-Forwarded-For "^(192.168.0.1)$" deny1
    SetEnvIf X-Forwarded-For "^(172.16.0.1)$" deny2
    Deny from env=deny1
    Deny from env=deny2

    “Order deny, allow”的顺序可以根据使用方式自定义。 “SetEnvIf”用来定义一个环境变量。这里将”X-Forwarded-For”字段作为一个变量,并使用了一个正则表达式匹配某IP(192.168.0.1)。 后续的Deny将根据该变量将所匹配IP进行屏蔽。

    配置Nginx屏蔽某源地址

    参考下面的内容修改配置文件:

    
    set_real_ip_from  10.10.251.0/24;
    
    real_ip_header X-Forwarded-For;
    deny 192.168.0.1;

    其中”set_real_ip_from”资源的”10.10.251.0/24”IP地址为UCloud北京BGP-C机房的ULB所在网段地址。 nginx会将来源为该网段的”X-Forwarded-For”作为真实IP地址。 deny后面的IP,既为所需要屏蔽的IP地址。


  • 相关阅读:
    剑指 Offer 30. 包含min函数的栈
    剑指 Offer 12. 矩阵中的路径
    剑指 Offer 11. 旋转数组的最小数字
    剑指 Offer 04. 二维数组中的查找
    LeetCode——139. 单词拆分
    LeetCode——(每日一题)恢复空格
    MySQL专职DBA博客目录-周万春
    MySQL专职DBA,微信群,技术群,交流群,开车群
    DBA生产经验总结
    创建MySQL账户
  • 原文地址:https://www.cnblogs.com/lixuebin/p/10814390.html
Copyright © 2011-2022 走看看