diff --git a/server.js b/server.js index 2eb1752..62dec4d 100644 --- a/server.js +++ b/server.js @@ -296,16 +296,25 @@ function logAction(userId, actionType, details, ipAddress) { // Функция для получения IP-адреса клиента function getClientIP(req) { - // Используем req.ip который учитывает trust proxy - let ip = req.ip; + // Логируем все заголовки для отладки + console.log("=== IP Headers Debug ==="); + console.log("req.ip:", req.ip); + console.log("x-forwarded-for:", req.headers["x-forwarded-for"]); + console.log("x-real-ip:", req.headers["x-real-ip"]); + console.log("x-client-ip:", req.headers["x-client-ip"]); + console.log("req.connection.remoteAddress:", req.connection?.remoteAddress); + console.log("req.socket.remoteAddress:", req.socket?.remoteAddress); + console.log("========================"); - // Если req.ip не определен или является локальным адресом nginx proxy manager + // Проверяем X-Forwarded-For заголовок в первую очередь + let ip = req.headers["x-forwarded-for"]?.split(",")[0].trim(); + + // Если X-Forwarded-For не определен, пробуем другие заголовки if (!ip || ip === "127.0.0.1" || ip === "::1" || ip === "::ffff:127.0.0.1") { - // Проверяем X-Forwarded-For заголовок от nginx proxy manager ip = - req.headers["x-forwarded-for"]?.split(",")[0].trim() || req.headers["x-real-ip"] || req.headers["x-client-ip"] || + req.ip || req.connection?.remoteAddress || req.socket?.remoteAddress || req.connection?.socket?.remoteAddress ||