Я установил выделенный IP-адрес для веб-сайта (с помощью directadmin), но все исходящие запросы php отправляются с общего IP-адреса сервера. Результатом следующего кода всегда является общий IP-адрес.
$a = file_get_contents("http://mxtoolbox.com/WhatIsMyIP/");
print $a;
Мне нужно отправлять запросы с выделенного IP-адреса, потому что мой платежный шлюз принимает запросы только с этого IP-адреса.
Нужно ли мне добавлять правила iptables для отправки всех запросов с выделенного IP-адреса или есть способ лучше?
Установите маршрут к платежному процессору через выделенный IP. Команда ip route add
- ваш друг.
Это должно быть в StackOverflow. Вам необходимо создать контекст для вашего сокета.
$opts = array(
'socket' => array(
'bindto' => '10.10.1.1:0',
)
);
$context = stream_context_create($opts);
$a = file_get_contents("http://mxtoolbox.com/WhatIsMyIP/", false, $context);
print $a;
В этом примере это будет привязано к IP 10.10.1.1. Порт 0 используется для того, чтобы ОС могла выбрать порт.
В противном случае вам придется либо изменить маршрут по умолчанию для всего трафика, либо определить IP-адрес сайта, который вы пытаетесь достичь. Последние могут быть ненадежными, если они используют распределенную сеть или изменяют свой адрес.