| 変数名 | 値 | 説明 |
|---|---|---|
REMOTE_ADDR |
クライアントの実IPアドレス(Nginx real_ip設定適用後) | |
HTTP_X_REAL_IP |
Nginxが設定したリアルIP(互換性用) | |
HTTP_X_FORWARDED_FOR |
プロキシチェーン全体(カンマ区切り) | |
HTTP_CLIENT_IP |
一部のプロキシが使用 |
| Header Name | Value |
|---|---|
' . htmlspecialchars($name) . ' | ';
echo '' . htmlspecialchars($value) . ' | '; echo '
✅ 正常: REMOTE_ADDR にパブリックIPアドレスが設定されています。
'; echo 'リアルIP転送設定が正しく動作しています。
'; } elseif (!empty($remoteAddr) && isPrivateIP($remoteAddr)) { echo '⚠️ 注意: REMOTE_ADDR がプライベートIPアドレスです: ' . htmlspecialchars($remoteAddr) . '
'; echo 'これは以下のいずれかが原因です:
'; echo 'ヒント: X-Forwarded-For ヘッダーには値があります: ' . htmlspecialchars($xForwardedFor) . '
'; echo 'values.yaml で nginx.forwardRealIP.enabled: true に設定してください。
⚠️ REMOTE_ADDR が設定されていません
'; } ?>
<?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]);
?>
# 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レンジ"