我找到了一些在nginx日志中匿名化IP的解决方案 - 比如Anonymize IP logging in nginx?
但是这会将IP剥离到C子网。这太多了。对于我的目的和GDPR compilant在我看来是足够的,如果IP的最后一个八位字节将被除以2,并且再次乘以2并且再乘以2。所以IP不准确。
可以在nginx / map中完成此操作。我还没有运气。
答案 0 :(得分:1)
在执行此操作之前,请查看其他法律,如果您的网站托管在欧盟,则UE指令2002/58 / EC要求您存储6个月到2年之间的真实IP地址,具体取决于您所在的国家/地区EU。
如果您在欧盟托管您的网站,那么只有在一段时间后才允许匿名或假冒IP地址。
答案 1 :(得分:0)
所以我使用编译的perl来回答,而不是纯粹的nginx。
nginx.conf
load_module /usr/local/libexec/nginx/ngx_http_perl_module.so;
(取决于操作系统 - 这是在freebsd上)
httpd {中的
perl_set $remote_addr_anon 'sub {
use POSIX;
my $r = shift;
my $str = $r->remote_addr;
my @ex = split(/\./, $str);
if ( scalar @ex == 4 ) {
my $anon_ip = @ex[0] . "." . @ex[1] . "." . @ex[2] . "." . (floor(@ex[3]/2)*2) ;
return $anon_ip;
} else {
return "IPv6"
}
}';
log_format anonymized '$remote_addr_anon - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
然后在access_log中使用匿名访问日志格式。
我不使用IPv6所以不关心它。如果你净化了这个,你可以,我不熟悉perl。