Не совсем смог передать суть вопроса в заголовке, поэтому более детальное описание.
У меня есть сервер, к нему прикреплено несколько IP адресов и храниться несколько сайтов. (условно назовем: сайт Ex и все остальные сайты на сервере).
Задача разместить сайт Ex на одном IP, а все остальные сайты на другом IP.
Путем не хитрых конфигураций сети на сервере, я добился того, что при пинге сайта Ex используется один IP, при пинге всех остальных сайтов используется второй IP.
Однако, если делать запросы с сайта Ex и с других сайтов (например через функцию file_get_contents), то IP будет одинаковый (как я понял это дифолтный IP сервера).
Я знаю о функции stream_context_set_default, но не знаю как ее использовать вне прокси, возможно есть какие-то другие варианты как можно засетить необходимый IP для любых обращений с сайта ?
Привязывает имя, указанное в параметре address, к сокету, описанному в параметре socket. Это должно быть сделано до того, как соединение установлено при помощи функции socket_connect() или socket_listen().
Я не использую socket_connect() или socket_listen() или я что-то не так понял ?
вы можете в file_get_contents передавать контекст сокета с конкретным настроенным IP
конечно, это тернистая дорога, потому что привязывать к конкретному IP внутри скрипта вкорне неверно (в 99.99% случаев).
И nginx вам не в помощь, потому что все соединения создаваемые file_get_contents из скрипта никаким боком не имеют отношения к nginx и он про них знать не знает. В данном случае nginx выступает только как обложка для соединение К вашему скрипту. только при соединении к скрипту вы настраиваете, какой IP видит пользователь.
Можно попробовать настроить ход конём в виде соединений типа yoursite.com/proxy/othersite.org/path/to/page.html которые будут проходить через nginx как через прокси, который уже будет висеть на определённом IP. Это более гибко и правильно, но потребует изменения всех ваших урлов внутри file_get_contents() с "othersite.org/path/to/page.html" на "yoursite.com/proxy/othersite.org/path/to/page.html"
Ilya: нда, нужно было брать отдельный vps. За ответы, спасибо.
Если будет время займусь исследованием, возможно что-то удастся найти, если что, отпишусь.