网友 iks 说:
目前广为流传的取真实 IP 的格式都是诸如 ~^(?P<firstAddr>[0-9.]+),?.*$ $firstAddr; 此类的,,,
这个正则只能匹配数字结构的 IPv4 地址,遇到字母就切断,,,造成 IPv6 取不完整
目前可以用以下字段代替原来的正则
- map $http_x_forwarded_for $realClientIp
- {
- def**lt $remote_addr;
- ~^(?P<firstAddr>[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+|[0-9a-fA-F]+:[0-9a-fA-F:]+:[0-9a-fA-F\.]+),?.*$ $firstAddr;
- }
- log_format main ‘$realClientIp [$time_local] &*uot;$re*uest&*uot; ‘
- ‘$status $body_bytes_sent &*uot;$http_referer&*uot; ‘
- ‘$http_user_agent $remote_addr’;
未经允许不得转载:爱主机 » 【水一贴】nginx 日志 X_Forwarded_For 取 IPv6 格式
爱主机