Я столкнулся со странной проблемой, и мне любопытно, сталкивались ли с ней и другие. и если есть что-то, что можно сделать ..
У нас есть установка, в которой у нас есть несколько машин AWS EC2 Linux, сидящих за ELB. Машины EC2 работают под управлением Nginx. Будем называть их моими производственными машинами (потому что они есть!)
У меня также есть облачная машина Rackspace с Apache. Полностью отдельный. Назовем это тестовым сервером.
Теперь в Сингапуре есть интернет-провайдер, который, похоже, направляет трафик через прозрачный прокси или что-то в этом роде, и когда вы выполняете проверку IP, IP часто меняется.
На самом деле я заметил, что когда я проверяю http://www.whatismyip.com, ip кажется стабильным (не меняется) после обновлений. Но, http://www.whatismyipaddress.com, при обновлении IP меняется! (так что мой провайдер делает странные вещи).
Теперь, возвращаясь к своей настройке, я заметил несколько вещей:
Проверка переменной REMOTE_ADDR из PHP при подключении к одной производственной машине Nginx (в обход балансировщика нагрузки) устанавливается на стабильный IP-адрес, который действительно изменяется.
При проверке переменной REMOTE_ADDR из PHP при подключении к тестируемому серверу Apache устанавливается IP-адрес, который изменяется при обновлении.
Проверяя заголовки при подключении к производственным машинам nginx через ELB, ELB устанавливает HTTP_X_FORWARDED_FOR на стабильный IP.
Кто-нибудь испытывал такое странное поведение? Я ничего не могу сделать? И какому IP мне "доверять"? (тот, который дает Apache, или тот, который дает ELB и Nginx?)
Спасибо!
Крис
HTTP_X_FORWARDED_FOR
это самый надежный способ получить IP-адрес пользователя, когда ваше приложение находится за обратным прокси-сервером / балансировщиком нагрузки. Однако я не знаю, что вы подразумеваете под «доверием»? HTTP_X_FORWARDED_FOR
это HTTP-заголовок, который может быть легко изменен клиентом или любой системой между вами и клиентом. Вы не хотите использовать его для чего-либо вроде аутентификации.