从客户端 Apache 获取 IP 和 Php
Get Ip From Client Apache and Php
想问,但也许这个问题是重复的。很抱歉,其他问题的所有答案都不适用于我。
问题
我有一个使用 apache 作为网络服务器的服务器 运行 php+7.4 具有默认设置和 certbot 作为 SSL public IP 192.168.1.11,我想检索 IP打开我的网站的客户端,例如域 news.test.com。 test.com 域本身有一个 public ip 地址示例 123.100.1.10。 如何获取打开news.test.com域的客户端ip?
已经做了
我已经这样做来获取 IP
public static function get_ip() {
$mainIp = '';
if (getenv('HTTP_CLIENT_IP'))
$mainIp = getenv('HTTP_CLIENT_IP');
else if(getenv('HTTP_X_FORWARDED_FOR'))
$mainIp = getenv('HTTP_X_FORWARDED_FOR');
else if(getenv('HTTP_X_FORWARDED'))
$mainIp = getenv('HTTP_X_FORWARDED');
else if(getenv('HTTP_FORWARDED_FOR'))
$mainIp = getenv('HTTP_FORWARDED_FOR');
else if(getenv('HTTP_FORWARDED'))
$mainIp = getenv('HTTP_FORWARDED');
else if(getenv('REMOTE_ADDR'))
$mainIp = getenv('REMOTE_ADDR');
else
$mainIp = 'UNKNOWN';
return $mainIp;
}
问题
我得到的问题不是我得到的 IP 客户端,而是从 test.com 域得到的 IP。我尝试了另一个互联网连接并进行了 public IP 测试,但我仍然从 test.com 获取 IP 而不是客户端 IP,是因为我的父域或我的 apache 的设置在错误的设置?或者有错误或其他获取客户端 IP 的方法。?
请尝试HTTP_CF_CONNECTING_IP
public static function get_ip() {
$mainIp = '';
if (getenv('HTTP_CF_CONNECTING_IP'))
$mainIp = getenv('HTTP_CLIENT_IP');
else if(getenv('HTTP_X_FORWARDED_FOR'))
$mainIp = getenv('HTTP_X_FORWARDED_FOR');
else if(getenv('HTTP_X_FORWARDED'))
$mainIp = getenv('HTTP_X_FORWARDED');
else if(getenv('HTTP_FORWARDED_FOR'))
$mainIp = getenv('HTTP_FORWARDED_FOR');
else if(getenv('HTTP_FORWARDED'))
$mainIp = getenv('HTTP_FORWARDED');
else if(getenv('REMOTE_ADDR'))
$mainIp = getenv('REMOTE_ADDR');
else
$mainIp = 'UNKNOWN';
return $mainIp;
}
想问,但也许这个问题是重复的。很抱歉,其他问题的所有答案都不适用于我。
问题
我有一个使用 apache 作为网络服务器的服务器 运行 php+7.4 具有默认设置和 certbot 作为 SSL public IP 192.168.1.11,我想检索 IP打开我的网站的客户端,例如域 news.test.com。 test.com 域本身有一个 public ip 地址示例 123.100.1.10。 如何获取打开news.test.com域的客户端ip?
已经做了
我已经这样做来获取 IP
public static function get_ip() {
$mainIp = '';
if (getenv('HTTP_CLIENT_IP'))
$mainIp = getenv('HTTP_CLIENT_IP');
else if(getenv('HTTP_X_FORWARDED_FOR'))
$mainIp = getenv('HTTP_X_FORWARDED_FOR');
else if(getenv('HTTP_X_FORWARDED'))
$mainIp = getenv('HTTP_X_FORWARDED');
else if(getenv('HTTP_FORWARDED_FOR'))
$mainIp = getenv('HTTP_FORWARDED_FOR');
else if(getenv('HTTP_FORWARDED'))
$mainIp = getenv('HTTP_FORWARDED');
else if(getenv('REMOTE_ADDR'))
$mainIp = getenv('REMOTE_ADDR');
else
$mainIp = 'UNKNOWN';
return $mainIp;
}
问题
我得到的问题不是我得到的 IP 客户端,而是从 test.com 域得到的 IP。我尝试了另一个互联网连接并进行了 public IP 测试,但我仍然从 test.com 获取 IP 而不是客户端 IP,是因为我的父域或我的 apache 的设置在错误的设置?或者有错误或其他获取客户端 IP 的方法。?
请尝试HTTP_CF_CONNECTING_IP
public static function get_ip() {
$mainIp = '';
if (getenv('HTTP_CF_CONNECTING_IP'))
$mainIp = getenv('HTTP_CLIENT_IP');
else if(getenv('HTTP_X_FORWARDED_FOR'))
$mainIp = getenv('HTTP_X_FORWARDED_FOR');
else if(getenv('HTTP_X_FORWARDED'))
$mainIp = getenv('HTTP_X_FORWARDED');
else if(getenv('HTTP_FORWARDED_FOR'))
$mainIp = getenv('HTTP_FORWARDED_FOR');
else if(getenv('HTTP_FORWARDED'))
$mainIp = getenv('HTTP_FORWARDED');
else if(getenv('REMOTE_ADDR'))
$mainIp = getenv('REMOTE_ADDR');
else
$mainIp = 'UNKNOWN';
return $mainIp;
}