如何获取真实的的IP地址

AI摘要
Deepseek提供支持

解析CDN下获取真实IP地址的PHP代码

我最近在获取用户IP地址的时候发现了一个问题,当我们的网站接入了CDN内容分发的时候网站获取的IP地址并非真实的IP地址,因此我们需要获得真实的IP地址就要通过HTTP标头来获取真实的IP地址,下面我就给大家介绍一下如何绕过CDN获取真实的IP地址。

获取访问者的真实IP地址是使用CDN(内容分发网络)时常见的需求。然而,$_SERVER['REMOTE_ADDR']返回的可能是CDN服务器的IP地址,而不是实际访问者的IP地址。在本文中,我们将介绍如何修改代码以获取真实的IP地址,并提供一个示例的PHP代码段。

广告
广告图片

1. 识别CDN的真实IP地址

当使用 CDN时,我们可以通过识别特定的HTTP标头来获取真实的IP地址。代码中的第一个条件检查是否存在HTTP_CF_CONNECTING_IP标头,如果存在,则使用该标头的值作为真实的IP地址。这是因为CDN将访问者的IP地址存储在这个特定的HTTP标头中。

2. 使用代理服务器的情况

如果HTTP_CF_CONNECTING_IP标头不存在,我们继续检查其他常见的HTTP标头,如HTTP_X_FORWARDED_FORHTTP_X_REAL_IP。这些标头通常用于在代理服务器或反向代理服务器上传递真实的客户端IP地址。如果这些标头存在,我们可以使用它们中的第一个IP地址作为真实的IP地址。这样,我们可以绕过CDN服务器,直接获取访问者的IP地址。

3. 直接连接到服务器的IP地址

最后,如果以上标头都不存在,我们退回到使用$_SERVER['REMOTE_ADDR'],它表示直接连接到服务器的IP地址。这是最后的备选方案,适用于没有代理服务器或反向代理服务器的情况。

示例代码:

<?php
if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
    // cdn
    $ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
} elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    // Forwarded for proxy
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif (isset($_SERVER['HTTP_X_REAL_IP'])) {
    // Nginx reverse proxy
    $ip = $_SERVER['HTTP_X_REAL_IP'];
} else {
    // Direct connection
    $ip = $_SERVER['REMOTE_ADDR'];
}

echo $ip;
?>

通过使用上述代码,你可以获取到访问者的真实IP地址,而不是CDN服务器的IP地址。确保根据你所使用的CDN和反向代理服务器的配置进行适当的调整,以获得准确的IP地址。这样,你可以在需要时进行进一步处理或记录真实的访问者IP地址。

广告
广告图片
温馨提示 : 非特殊注明,否则均为©李联华的博客网原创文章,本站文章未经授权禁止任何形式转载;来自:俄亥俄州·哥伦布 ,欢迎您的访问!
文章链接:https://www.lilianhua.com/how-to-obtain-the-real-ip-address.html
请先登录才能参与答题
距本场结束剩 00 00 00 00
轻量应用服务器 2核2G
200M峰值带宽,适用于网站搭建、Web应用、容器环境、电商独立站等
立即前往
扫码进入
扫描二维码购买
文澜千文

文澜千文

请登录以使用此功能。

泓一香葱苏打饼干1000g 饼干休闲零食追剧小吃咸味解馋充饥食品2斤装 泓一香葱苏打饼干1000g 饼干休闲零食追剧小吃咸味解馋充饥食品2斤装
Loading...
OpenClaw

OpenClaw 龙虾

AI AGENT GATEWAY
在您的服务器部署 OpenClaw,打造专属极速 AI 助手。
零门槛一键部署环境
支持 QQ/飞书/微信 渠道
跨平台指令分发执行
立即安装