Назад | Перейти на главную страницу

Используете более одного внешнего IP на выделенном сервере?

Поэтому я покупаю выделенный сервер, и провайдер говорит, что у меня есть 4 доступных IP-адреса. Допустим, это ip1, ip2 ... ip4, поэтому я хочу настроить свой выделенный сервер для запуска нескольких доменов на этих IP-адресах, например, domain1 на ip1 ... Я сделал это без проблем, теперь я хочу, чтобы при запуске php script на domain1 / script.php, когда этот сценарий извлекает данные (file_get_contents ()) с whatismyip.com (например) whatismyip.com показывает ip1, а когда я запускаю на domain2, он показывает ip2 и т. д. Это означает, что у каждого домена есть собственный отдельный внешний IP-адрес, мне нужна помощь, как установить его на сервере на базе Linux (CentOS). Я знаю, что это возможно, VPS - это пример того, как это работает, но я хочу знать, где находится решение, нужен ли мне собственный сценарий Linux, запускаемый из кода PHP, или конфигурация apache, или третий вариант? Пожалуйста, помогите мне, если знаете решение. Заранее спасибо.

Если вы специально используете file_get_contents вам нужно использовать stream_create_context вызов функции для создания контекста и привязки его к нужному IP-адресу. Что-то вроде этого:

$opts = array(
    'socket' => array(
        'bindto' => '192.168.0.100:0',
    ),
);
$context = stream_context_create($opts);
echo file_get_contents('http://whatismyip.com', false, $context);

Это позволит вам контролировать, какой IP-адрес используется для исходящего соединения.

РЕДАКТИРОВАТЬ: см. http://www.php.net/manual/en/context.socket.php для более подробной информации.

1) Вам необходимо зарегистрировать домены, чтобы указывать на нужные IP-адреса у вашего DNS-провайдера:

host1.com -> 10.1.1.1 host2.com -> 10.1.1.2 host3.com -> 10.1.1.3 host4.com -> 10.1.1.4

2) Попробуйте создать виртуальные хосты в apache следующим образом: но создайте одну запись виртуального хоста для каждого IP-адреса, чтобы в итоге получилось 4 виртуальных хоста.

<VirtualHost 10.1.1.1>
    ServerAdmin webmaster@host1.com
    DocumentRoot /var/www/html/host1.com
    ServerName host1.com
    ErrorLog /var/log/httpd/host1.com-error_log
    TransferLog /var/log/httpd/host1.com-access_log
</VirtualHost>