From 23a77d6868ab9b89a7ca3fd3fc353fc1b7e703e3 Mon Sep 17 00:00:00 2001 From: Fovway Date: Sun, 26 Oct 2025 07:02:20 +0700 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=D0=A3=D0=BB=D1=83=D1=87=D1=88?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D0=BB=D0=BE=D0=B3=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B8=20=D0=BE=D0=BF=D1=82=D0=B8?= =?UTF-8?q?=D0=BC=D0=B8=D0=B7=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B0=20?= =?UTF-8?q?=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F=20=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20IP-=D0=B0=D0=B4=D1=80?= =?UTF-8?q?=D0=B5=D1=81=D0=B0=20=D0=BA=D0=BB=D0=B8=D0=B5=D0=BD=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Добавлено детальное логирование заголовков для отладки при получении IP-адреса. - Оптимизирована функция получения IP-адреса с учетом заголовков прокси и локальных адресов, улучшая обработку различных сценариев. --- server.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) 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 ||