GDPR - 在nginx中匿名化IP(最后一个八位字节%2 = 0)

时间:2018-01-15 08:41:30

标签: nginx

我找到了一些在nginx日志中匿名化IP的解决方案 - 比如Anonymize IP logging in nginx?

但是这会将IP剥离到C子网。这太多了。对于我的目的和GDPR compilant在我看来是足够的,如果IP的最后一个八位字节将被除以2,并且再次乘以2并且再乘以2。所以IP不准确。

可以在nginx / map中完成此操作。我还没有运气。

2 个答案:

答案 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。