IP-адрес клиента по протоколу https с помощью балансировщиков нагрузки Rackspace Cloud - PullRequest
10 голосов
/ 09 ноября 2011

В настоящее время мы используем Lighttpd с FastCGI для предоставления PHP нашим клиентам.Недавно мы добавили балансировку нагрузки через RackSpace Cloud, чтобы помочь нам обрабатывать наш трафик, однако IP-адрес клиента теперь является IP-адресом балансировщика нагрузки.Весь трафик проходит через HTTPS.

Мы включили mod_extforward и перепробовали разные конфигурации для использования нашего LB IP и разных заголовков («X-Forwarded-For», «Forwarded-For», «X»).-Cluster-Client-Ip ") и мы не можем заставить это работать!

Есть идеи?Спасибо!

Ответы [ 6 ]

7 голосов
/ 29 февраля 2012

Если вы используете облачные балансировщики нагрузки Rackspace, вы не сможете получить IP-адрес клиента по SSL.

Для простого HTTP балансировщики могут делать интеллектуальные вещи (страница «служба недоступна», X-Forwarded-for и т. Д.) Однако балансировщики нагрузки не могут делать ничего, кроме пересылки байтов между клиентом и сервером через HTTPS, потому что без закрытого ключа невозможно изменить поток (кроме как сделать его недействительным.)

Кто-то задал этот вопрос на форумах Rackspace некоторое время назад.

1 голос
/ 01 мая 2014

Согласно Rackspace, SSL-терминация не должна использоваться, если ваше веб-приложение передает личную идентификационную информацию (PII)

http://www.rackspace.com/knowledge_center/product-faq/cloud-load-balancers

Я вынужден прибегнуть к настройке клиентаIP в куки.Печенье установлено в JavaScript.IP-адрес клиента получается путем вызова jsonp на сервер (не за балансировщиком нагрузки), который предоставляет общедоступный IP-адрес клиента.Это все, что я могу придумать, где я все еще могу использовать Cloud Load Balancer от Rackspace.

0 голосов
/ 17 декабря 2014

Один из способов решения этой проблемы - использовать CloudFlare .Помимо всех дополнительных функций и преимуществ, которые он предоставляет, он на самом деле является прокси-сервером и будет включать собственный заголовок x-forwarded-for.

Это позволяет обойти проблему, поскольку заголовок x-forwarded-for уже присутствовал ранееон попадает в балансировщик нагрузки стойки, поэтому ему не нужно ничего добавлять.IP-адрес клиента уже будет в заголовке.

Обратите внимание: этот метод не является полностью надежным, даже со списком доверенных прокси.Можно подделать ваш IP-адрес, изменив файл хоста вашего компьютера и минуя cloudflare, напрямую подключившись к балансировщику нагрузки.Я бы не стал использовать эту технику для чего-либо, что требует повышенной безопасности.

0 голосов
/ 15 октября 2014

Я устанавливаю mod_rpaf для серверов под балансировщиками нагрузки и Rackspace.Тогда любой PHP-код работает так же, как и раньше, с REMOTE_ADDR

0 голосов
/ 11 ноября 2012

Вы можете увидеть здесь:

http://www.rackspace.com/knowledge_center/article/why-does-every-visitor-to-my-cloud-sites-website-have-the-same-ip-address

Правильная переменная PHP для использования в SSL:

$_SERVER['HTTP_X_FORWARDED_FOR']
0 голосов
/ 26 августа 2012

В Rackspace добавлено SSL-завершение, поэтому балансировщик нагрузки может расшифровать трафик и передавать незашифрованный трафик на его узлы сервера. См. this для получения дополнительной информации. Конечно, это означает, что вы отправляете трафик через общедоступную ссылку с балансировщика нагрузки на ваши веб-серверы. И это доступно только через их API, а не через веб-консоль, что отстой.

...