2016-01-01 7 views
2

У меня есть https Meteor webapp, размещенный на modulus.io. Следуя советам here У меня есть метод сервера:Доступ к IP-адресу клиента (а не балансировщику нагрузки) от Meteor, с модулем

Meteor.methods({ 
    printIP: function() { 
     return this.connection.clientAddress; 
    } 
}); 

Я называю это из моего браузера консоли на живом сайте:

Meteor.call('printIP', function(err, ip) { console.log(ip); }) 

Но это всегда возвращает IP-адрес load balancer MODULUS в «s, 54.236.216.66 ,

Как получить доступ к IP-адресу клиента вместо балансировки нагрузки?

Спасибо!

ответ

4

С некоторых экспериментов я нашел решение:

Meteor.methods({ 
    printIP: function() { 
     if (this.connection.httpHeaders && this.connection.httpHeaders['x-forwarded-for']) { 
     return this.connection.httpHeaders['x-forwarded-for']; 
     } else { 
     return this.connection.clientAddress; 
     } 
    } 
}); 
+0

Заметим, что 'X-Forwarded-For' заголовка может быть запятой список (на самом деле, запятой + разделенный пробелами список) IP адреса, где первый адрес является исходным клиентом. – MasterAM