🔍 Real IP Detection Test

ℹ️ 情報: このページは、NginxのリアルIP転送設定が正しく動作しているかを確認します。

📊 IP Address Information

変数名 説明
REMOTE_ADDR クライアントの実IPアドレス(Nginx real_ip設定適用後)
HTTP_X_REAL_IP Nginxが設定したリアルIP(互換性用)
HTTP_X_FORWARDED_FOR プロキシチェーン全体(カンマ区切り)
HTTP_CLIENT_IP 一部のプロキシが使用

🔧 All HTTP Headers

$value) { if (strpos($key, 'HTTP_') === 0) { $headerName = str_replace('_', '-', substr($key, 5)); $headers[$headerName] = $value; } } ksort($headers); foreach ($headers as $name => $value) { echo ''; echo ''; echo ''; echo ''; } ?>
Header Name Value
' . htmlspecialchars($name) . '' . htmlspecialchars($value) . '

✅ 診断結果

= ip2long($start) && $longIP <= ip2long($end)) { return true; } } return false; } if (!empty($remoteAddr) && !isPrivateIP($remoteAddr)) { echo '

正常: REMOTE_ADDR にパブリックIPアドレスが設定されています。

'; echo '

リアルIP転送設定が正しく動作しています。

'; } elseif (!empty($remoteAddr) && isPrivateIP($remoteAddr)) { echo '

⚠️ 注意: REMOTE_ADDR がプライベートIPアドレスです: ' . htmlspecialchars($remoteAddr) . '

'; echo '

これは以下のいずれかが原因です:

'; echo ''; if (!empty($xForwardedFor)) { echo '

ヒント: X-Forwarded-For ヘッダーには値があります: ' . htmlspecialchars($xForwardedFor) . '

'; echo '

values.yaml で nginx.forwardRealIP.enabled: true に設定してください。

'; } } else { echo '

⚠️ REMOTE_ADDR が設定されていません

'; } ?>

📝 PHPでの使用例

<?php
/**
 * 訪問者のリアルIPアドレスを取得する関数
 */
function getRealIP() {
    // nginx.forwardRealIP.enabled が true の場合、
    // REMOTE_ADDR に実IPが設定されている
    return $_SERVER['REMOTE_ADDR'] ?? 'unknown';
}

// 使用例
$visitorIP = getRealIP();
echo "訪問者のIPアドレス: " . $visitorIP;

// データベースに記録する例
// $stmt = $pdo->prepare("INSERT INTO access_log (ip_address, visited_at) VALUES (?, NOW())");
// $stmt->execute([$visitorIP]);
?>

⚙️ Helm設定例

# values.yaml
nginx:
  forwardRealIP:
    enabled: true
    header: "X-Forwarded-For"
    recursive: true
    trustedProxies:
      - "10.0.0.0/8"
      - "172.16.0.0/12"
      - "192.168.0.0/16"
    additionalTrustedProxies:
      - "あなたのLoadBalancerのIPレンジ"