Улучшено логирование и оптимизирована функция получения IP-адреса клиента

- Добавлено детальное логирование заголовков для отладки при получении IP-адреса.
- Оптимизирована функция получения IP-адреса с учетом заголовков прокси и локальных адресов, улучшая обработку различных сценариев.
This commit is contained in:
Fovway 2025-10-26 07:02:20 +07:00
parent 2e615ec92c
commit 23a77d6868

View File

@ -296,16 +296,25 @@ function logAction(userId, actionType, details, ipAddress) {
// Функция для получения IP-адреса клиента // Функция для получения IP-адреса клиента
function getClientIP(req) { 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") { if (!ip || ip === "127.0.0.1" || ip === "::1" || ip === "::ffff:127.0.0.1") {
// Проверяем X-Forwarded-For заголовок от nginx proxy manager
ip = ip =
req.headers["x-forwarded-for"]?.split(",")[0].trim() ||
req.headers["x-real-ip"] || req.headers["x-real-ip"] ||
req.headers["x-client-ip"] || req.headers["x-client-ip"] ||
req.ip ||
req.connection?.remoteAddress || req.connection?.remoteAddress ||
req.socket?.remoteAddress || req.socket?.remoteAddress ||
req.connection?.socket?.remoteAddress || req.connection?.socket?.remoteAddress ||