Виктория В.
5 сообщений
#15 лет назад
Есть виртуальный сервер и десяток дополнительных IP.
Сайты размещаю на различных IP данного сервера. Всё замечательно.
Но на каком бы сайте я не запускала php-скрипт, они все работают с основного IP сервера.
Можно ли сконфигурировать сервер таким образом, чтоб скрипт запускался с IP сайта, на котором он расположен. В техподдержке мне сказали что так сделать нельзя, что скрипт всегда будет работать с основного IP сайта. Правы ли они или просто отмахнулись от проблемы. Что-то мне подсказывает что такая возможность должна быть, но знаний по работе веб-серверов не хватает.
Вадим Т.
3240 сообщений
#15 лет назад
Такая возможность есть. Но в этом случае сотрудники техподдержки не неправы, так как это не их задача, точнее, не их проблема.
Это все может решаться внутри Вашего скрипта.

Самый простой способ - если Ваш скрипт для запросов внешних ресурсов использует CURL, и достаточно одним из параметров указать другой IP Вашего хоста, и все запросы пойдут от другого IP.
Например, так:

curl_setopt($ch, CURLOPT_INTERFACE, $ip);

Если используете сокетное соединение, то это делается так:

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, $ip);
socket_connect($socket, $host, $port);
......

Если используете простое чтение стороннего ресурса как обычного файла, то, если у Вас PHP5, будет работать решение типа такого:

$options = array('socket' => array('bindto' => $ip));
$context = stream_context_create($options);
$data = file_get_contents($url, false, $context);

Во всех этих примерах в качестве $ip нужно подставлять один из IP адресов Вашего хоста (можно использовать IP текущего сайта), с которого будет идти запрос к внешнему ресурсу.
Виктория В.
5 сообщений
#15 лет назад
Спасибо, tvv
Про решение через сокеты из скрипта я знаю.
Другие два, предложенные вами, способа обязательно попробую.
Остается один единственный вопрос.
Всё-таки права техподдержка или нет? Решить эту задачу настройками сервера действительно нельзя?
Константин Т.
589 сообщений
#15 лет назад
Вообще если скрипт запускать из враппере, устанавливающего маршрут к конкретному адресу на нужный ip - должно всё работать без изменения скрипта.
Вадим Т.
3240 сообщений
#15 лет назад
Цитата ("VikaS"):
Всё-таки права техподдержка или нет? Решить эту задачу настройками сервера действительно нельзя?

Самый простой способ - делать в лоб, выделить отдельные VPS на каждый сайт, каждый со своим IP, своим окружением, настройками роутинга и т.д.
Сделать это можно, если Ваш хостинг поддерживает такой сервис, но наверняка это - за отдельную плату.
Зато скрипты не потребуется исправлять.

Как сделать по-другому - не знаю, я к сожалению программер, а не админ. ))