Адрес IP-адреса клиента по https с помощью балансировщика облачной нагрузки Rackspace

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

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

Любые идеи? Спасибо!

Ответ 1

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

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

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

Ответ 2

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

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

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

Ответ 3

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

Ответ 5

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

Ответ 6

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

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

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