Перераспределение моих запросов PHP (CURL, fsockopen, file_get_contents) source.com в x.x.x.x следующим образом:
Win OS:
c:\Windows\System32\drivers\etc\hosts
x.x.x.x source.com
ОС Linux:
$ sudo gedit /etc/hosts
x.x.x.x source.com
Возможно ли сделать это на уровне конфигурации Apache или PHP (т.е. без вмешательства в файл hosts)?
Итак, вы хотите форсировать разрешение DNS domain1.com
на другой IP (скажем, domain2.com
IP), но не хочу делать это с помощью /etc/hosts
и хотел бы сделать это только в конфигурации Apache или PHP.
Ну, проблема в том, что PHP использует настройки DNS вашего сервера, установленные в /etc/resolv.conf
а также /etc/hosts
как переопределение, и Apache — это просто веб-сервер, поэтому он не может изменить логику вашего приложения или управлять сетью.
Что будет чище, это сохранить IP domain2.com
в конфигурационном файле php и вызовите этот IP с помощью curl вместо domain1.com
, и вы все еще можете добавить Host: domain1.com
заголовок вашего HTTP-вызова, если это необходимо.
Изменить: Вот пример использования curl в PHP.
Скажем
domain1.com
IP есть 1.1.1.1
domain2.com
IP есть 2.2.2.2
Если ваша цель позвонить 2.2.2.2
но с доменом domain1.com
Вам просто нужно изменить Host
заголовок вашего HTTP-запроса, например:
<?php
$ch = curl_init('http://2.2.2.2/');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: domain1.com'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
echo curl_exec($ch);
Других решений пока нет …