✨ Улучшено логирование и оптимизирована функция получения IP-адреса клиента
- Добавлено детальное логирование заголовков для отладки при получении IP-адреса. - Оптимизирована функция получения IP-адреса с учетом заголовков прокси и локальных адресов, улучшая обработку различных сценариев.
This commit is contained in:
parent
2e615ec92c
commit
23a77d6868
19
server.js
19
server.js
@ -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 ||
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user