如何记录客户端真实IP以及CDN IP?

时间:2018-07-25 03:16:49

标签: nginx cdn cloudflare real-ip

我正在为我的网站使用cloudflare。

我遇到的问题是,在nginx上启用realip模块后,所有CDN ip都替换为用户的realip。然后,当我检查nginx日志时,无法确定用户是通过CDN连接还是直接与服务器连接。

下面是我的配置:

set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
...
real_ip_header X-Forwarded-For;

....
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '

有什么办法可以同时保留realip和CDN IP?

1 个答案:

答案 0 :(得分:1)

来自:Including the original visitor IP in your logs

  

您可以在$http_cf_connecting_ip指令中包含变量$http_x_forwarded_forlog_format

如果您既要使用CDN IP,又要使用CF-Connecting-IP,请不要使用real_ip_header并将$http_cf_connection_ip添加到您的log_format

log_format  main  '$remote_addr - $http_cf_connection_ip ...'