Запуск php-скриптов с разных IP одного сервера
5 сообщений
#16 лет назад
Есть виртуальный сервер и десяток дополнительных IP.Сайты размещаю на различных IP данного сервера. Всё замечательно.
Но на каком бы сайте я не запускала php-скрипт, они все работают с основного IP сервера.
Можно ли сконфигурировать сервер таким образом, чтоб скрипт запускался с IP сайта, на котором он расположен. В техподдержке мне сказали что так сделать нельзя, что скрипт всегда будет работать с основного IP сайта. Правы ли они или просто отмахнулись от проблемы. Что-то мне подсказывает что такая возможность должна быть, но знаний по работе веб-серверов не хватает.
3240 сообщений
#16 лет назад
Такая возможность есть. Но в этом случае сотрудники техподдержки не неправы, так как это не их задача, точнее, не их проблема.Это все может решаться внутри Вашего скрипта.
Самый простой способ - если Ваш скрипт для запросов внешних ресурсов использует 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 сообщений
#16 лет назад
Спасибо, tvvПро решение через сокеты из скрипта я знаю.
Другие два, предложенные вами, способа обязательно попробую.
Остается один единственный вопрос.
Всё-таки права техподдержка или нет? Решить эту задачу настройками сервера действительно нельзя?
589 сообщений
#16 лет назад
Вообще если скрипт запускать из враппере, устанавливающего маршрут к конкретному адресу на нужный ip - должно всё работать без изменения скрипта.
3240 сообщений
#16 лет назад
Цитата ("VikaS"):Всё-таки права техподдержка или нет? Решить эту задачу настройками сервера действительно нельзя?
Самый простой способ - делать в лоб, выделить отдельные VPS на каждый сайт, каждый со своим IP, своим окружением, настройками роутинга и т.д.
Сделать это можно, если Ваш хостинг поддерживает такой сервис, но наверняка это - за отдельную плату.
Зато скрипты не потребуется исправлять.
Как сделать по-другому - не знаю, я к сожалению программер, а не админ. ))