vps交流

【水一贴】nginx 日志 X_Forwarded_For 取 IPv6 格式


目前广为流传的取真实 IP 的格式都是诸如 ~^(?P<firstAddr>[0-9.]+),?.*$ $firstAddr; 此类的,,,
这个正则只能匹配数字结构的 IPv4 地址,遇到字母就切断,,,造成 IPv6 取不完整

【水一贴】nginx 日志 X_Forwarded_For 取 IPv6 格式

目前可以用以下字段代替原来的正则

  1. map $http_x_forwarded_for $realClientIp
  2. {
  3.     default $remote_addr;
  4.     ~^(?P<firstAddr>[0-9]+.[0-9]+.[0-9]+.[0-9]+|[0-9a-fA-F]+:[0-9a-fA-F:]+:[0-9a-fA-F.]+),?.*$ $firstAddr;
  5. }
  6. log_format main ‘$realClientIp [$time_local] "$request" ‘
  7.     ‘$status $body_bytes_sent "$http_referer" ‘
  8.     ‘$http_user_agent $remote_addr’;

复制代码

食用教程
nginx.conf 的 http 块插入

【水一贴】nginx 日志 X_Forwarded_For 取 IPv6 格式

在网站配置界面启用此日志格式

【水一贴】nginx 日志 X_Forwarded_For 取 IPv6 格式

来源 https://www.ziyouwu.com/archives/10958.html