CDN下nginx获取用户真实IP地址

416 阅读1分钟

1、使用CDN自定义IP头来获取,如果CDN厂商使用nginx,那么在nginx上将$remote_addr赋值给指定的头,方法如下:

proxy_set_header remote-user-ip $remote_addr;

后端将会收到 remote_user_ip 的http头

<?php
    $ip = getenv("HTTP_REMOTE_USER_IP");
    echo $ip;    
?>

2、通过HTTP_X_FORWARDED_FOR获取IP地址,一般情况下CDN服务器都会传送HTTP_X_FORWARDED_FOR头,这是一个ip串,后端的真实服务器获取HTTP_X_FORWARDED_FOR头,截取字符串第一个不为unkown的IP作为用户真实IP地址, 例如: 1.1.11.11,2.2.22.22,3.3.33.33,4.4.44.44(用户IP,CDN前端IP,CDN中转,公司NGINX代理)

<?php
    $ip = getenv("HTTP_X_FORWARDED_FOR");
    echo $ip;
?>