Get Mystery Box with random crypto!

nginx 日志 X_Forwarded_For 取 IPv6 格式 目前广为流传的 nginx | 欧式的频道

nginx 日志 X_Forwarded_For 取 IPv6 格式

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

map $http_x_forwarded_for $realClientIp
{
default $remote_addr;
~^(?P[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] "$request" '
'$status $body_bytes_sent "$http_referer" '
'$http_user_agent $remote_addr';

可以成功取到 IPv6 和 IPv4