快捷搜索:   nginx

Nginx Waf防火墙在CDN环境下封禁访客真实IP方法 含宝塔面板修改方法

宝塔面板下Nginx编译了WAF防火墙,但是如果你是CDN用户,你会发现WAF获取到的访客IP并不是真实的访客IP而是CDN节点的IP地址,因此如果你开启了WAF,并且CDN有频繁的回源,可能会造成CDN IP被WAF给列入黑名单,而真正攻击你的IP却不会被封禁,因此需要修改一下WAF配置文件

宝塔面板下WAF配置文件在/www/server/nginx/waf/init.lua


将其中的

function getClientIp()
        IP  = ngx.var.remote_addr 
        if IP == nil then
                IP  = "unknown"
        end
        return IP
end


改成


function getClientIp()
        IP = ngx.req.get_headers()["X-Real-IP"]
           if IP == nil then
               IP = ngx.req.get_headers()["x_forwarded_for"]
           end
           if IP == nil then
               IP = ngx.var.remote_addr
           end
        return IP
end

对于非宝塔面板WAF,可能没有这个function

可以这样设置

  1. local headers=ngx.req.get_headers()  
  2. local ip=headers["X-REAL-IP"] or headers["X_FORWARDED_FOR"] or ngx.var.remote_addr or "0.0.0.0"  
顶(3)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论