阿里云waf防火墙导致nginx网站访问日志不显示真实ip问题配置

2024-01-25 09:37:00
1147533288
原创
102
摘要:nginx网站访问日志不显示真实ip,域名先访问到阿里云waf,然后再访问到源站。nginx日志显示的都是waf对应ip列表信息。

场景描述:

网站放在阿里云ecs服务器上,php的网站,通过nginx对外80端口提供服务。

日常访问网站域名时,域名映射到阿里云waf防火墙地址,由waf过滤请求后再访问源站,源站不直接暴露到互联网公网。


问题情况:

tail  -f access.log查看nginx访问日志时,发现其访问ip均是内网ip,都是waf ip地址池里的,没有任何外网ip记录情况。


处理办法:

1. nginx配置文件http部分,增加site_log(可自定义名称)对应的日志格式。


http{
      log_format  site_log  '$http_x_forwarded_for [$remote_user] [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" ';
     #其他配置
}
2. nginx配置文件server部分,修改原有日志部分,使其日志按指定格式输出。
server{
     access_log /www/wwwlogs/www.jswsrc.com.cn.log site_log;
     #其他配置
}

3. server部分,请求处理前,增加真实ip部分X-Forwarded-For


set_real_ip_from 101.200.106.0/24;
real_ip_header X-Forwarded-For;
location / {
    # 指定IP黑名单,拒绝访问
    deny 180.98.18.147;
    # 允许所有IP访问
    allow all;
}


4. 重启,nginx -s reload。查看日志验证。


参考资料:

获取客户端真实IP

https://help.aliyun.com/document_detail/42205.html

    文章分类
    联系我
    联系人: meepo
    电话: *****
    Email: 1147533288@qq.com
    QQ: 1147533288