diff --git a/server.js b/server.js index 4907f9b..2eb1752 100644 --- a/server.js +++ b/server.js @@ -14,9 +14,9 @@ require("dotenv").config(); const app = express(); const PORT = process.env.PORT || 3000; -// Настройка trust proxy для правильного получения IP адресов через прокси -// Доверяем nginx proxy manager (обычно работает на localhost) -app.set("trust proxy", ["127.0.0.1", "::1", "::ffff:127.0.0.1"]); +// Настройка trust proxy для nginx proxy manager +// Доверяем всем прокси (nginx proxy manager должен передавать X-Forwarded-For) +app.set("trust proxy", true); // Создаем директорию для аватарок, если её нет const uploadsDir = path.join(__dirname, "public", "uploads"); @@ -296,17 +296,16 @@ function logAction(userId, actionType, details, ipAddress) { // Функция для получения IP-адреса клиента function getClientIP(req) { - // Используем встроенный в Express метод req.ip, который учитывает trust proxy + // Используем req.ip который учитывает trust proxy let ip = req.ip; - // Если req.ip является локальным адресом, пробуем получить из заголовков + // Если req.ip не определен или является локальным адресом nginx proxy manager 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.headers["cf-connecting-ip"] || // Для Cloudflare req.connection?.remoteAddress || req.socket?.remoteAddress || req.connection?.socket?.remoteAddress ||