Nginx后端服务器日志中如何记录真实IP

nginx 运维 · systemofdown · 于 1年前 发布 · 1182 次阅读

在实际生产中经常是多层网络转发的, 如: 安全防护 》负载均衡 》后端服务器

默认的nginx配置拿到的是上一级的ip, 获取真实iP 需要修改几个地方:

nginx日志格式, vim /etc/nginx/nginx.conf

$remote_addr 改成$http_x_real_ip

......

    log_format  main  '$http_x_real_ip - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
... ...

nginx server配置, 设置realip相关参数

server {
    charset utf-8;
    client_max_body_size 128M;

    set_real_ip_from 0.0.0.0/0; #设置信任IP, 从这写来路中获取真实IP, 支持多行, 根据需要设置
    real_ip_header  X-Forwarded-For;  #从X-Forwarded-For中取,取最后一个
    real_ip_recursive       on; #如果X-FOrwarded-For的最后一个地址和客户端地址相同,pass掉,取上一个
}

realip模块, 参考官方文档: Module ngx_http_realip_module

共收到 0 条回复
没有找到数据。
添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册