2013-04-03 5 views
1

У меня есть 2 сервера, откуда я получаю мой клиент $_SERVER['REMOTE_ADDR']

На сервере (A), я хранить ф из $_SERVER['REMOTE_ADDR'] в БД и выполнить header('Location: ...') к серверу (B). Сервер (B), печатает/эхо ip с $_SERVER['REMOTE_ADDR'] на экране.

Sidenote: страница на сервере (A) вызывается изнутри iframe, после чего страница сервера (B) загружается в тот же iframe.

Однако, когда я сравниваю оба результата, я вижу, что сервер (A) возвращает IP-адрес локальной сети, а сервер (B) возвращает внешний IP-адрес. Что является причиной этого? Я ожидал, что оба будут локальными/внешними ip как поведение.

+0

Что такое удаленный локальный IP-адрес? –

+1

Возможно, сервер B находится в вашей локальной подсети, а сервер A - нет? То есть есть локальный маршрут к серверу B (например, 10.0.1.2), даже если вы обращаетесь к нему через глобальное имя хоста (например, myhost.com). В некоторых случаях я думаю, что ваше сетевое оборудование может перенаправить вас на локальный IP-адрес. Также проверьте настройки канонического имени хоста вашего веб-сервера. – Simon

+0

Возможно, есть местный обратный прокси-сервер перед веб-сервером. В этом случае вы можете проверить, отправляет ли обратный прокси специальный заголовок с клиентом ip. – Johni

ответ

1

Из инструкции PHP:

$ _SERVER это массив, содержащий информацию, такую ​​как заголовки, пути, и места подлинника. Записи в этом массиве создаются сервером . Нет гарантии, что каждый веб-сервер предоставит любые из них; серверы могут опускать некоторые или предоставлять другим, не перечисленным здесь. При этом большое количество этих переменных учитывается в спецификации »CGI/1.1, поэтому вы должны быть в состоянии ожидать их.

Возможно, ваш сервер A не позволяет получить удаленный IP-адрес по соображениям безопасности.

Смежные вопросы