从客户端 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;
}