fsockopen внутри php для удаленного сервера, какой IP получит удаленный сервер? - PullRequest
2 голосов
/ 08 декабря 2011

Фон :
Мой веб-сервер apache работает на двух виртуальных хостах с двумя разными IP-адресами.Я внес в белый список оба этих IP-адреса для удаленного сервера / системы SMPP.Я бы связывался с удаленным сервером с одной машины, имеющей эти два IP-адреса.
Ситуация :
Я пытаюсь открыть сокет-соединение с удаленным сервером SMPP.Но я хочу установить соединение с сервером с другого IP-адреса.
Что я пробовал : я создал две папки mkdir /var/www/html/server{1,2} и добавил следующие строки в мой http.conf

Listen 1.1.1.1:80
Listen 2.2.2.2:80
<VirtualHost 1.1.1.1:80>
    DocumentRoot /var/www/html/server1
</VirtualHost>
<VirtualHost 2.2.2.2:80>
    DocumentRoot /var/www/html/server2
</VirtualHost>

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

Вопрос : Когда вы fsockopen внутри PHP, какой IP-адрес отправляется на удаленный сервер?это будет так же, как $_SERVER['SERVER_ADDR'] или что-то еще?

Примечание по IP-адресам :
Я видел пару ответов, в которых упоминался фактический IP-адрес моей машины.Предположим, что у меня есть две карты eth, обеспечивающие мне два интерфейса eth0 и eth1 с IP-адресами 1.1.1.1 и 2.2.2.2.Оба связаны с внешним миром, и я могу позвонить на мой компьютер по любому адресу.Так что, если ваш ответ что-то вроде фактически-публично-связанного-вверх-ip-адреса-вашего-сервера , скажите, пожалуйста, какой из них 1.1.1.1 или 2.2.2.2?Как вы решаете, какой из них фактический , а какой виртуальный ?

Ответы [ 2 ]

1 голос
/ 08 декабря 2011

Предположим, у вас есть 3 IP-адреса на сервере:

1.1.1.1 - main IP (link IP)
2.2.2.2, 3.3.3.3 - on some other network interfaces

Все запросы будут отправляться на другие серверы с основного IP-адреса.

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

Например, у меня есть 2 интерфейса: мосты eth0 и eth1 и общедоступный IP-адрес связан смост.

1 голос
/ 08 декабря 2011

Это будет фактический публичный IP вашего сервера.

...