есть сервер, nginx + php5-fpm
т.к. нагрузка на один из сайтов стала расти, пришли к выводу, что необходимо нагруженный сайт вынести на отдельный инстанс. Вот встала задача. Теперь есть два сервера. на одном несколько сайтов, на втором один нагруженный. Могли бы тыкнуть носом что и где почитать, чтобы настроить работу этих двух серверов?
Если бы был апач на бэкэнде, я б настроил и на одной и на другой машине по серверу и указал бы документ рут всем, а nginx просто проксировала бы. Но в моем случае настроено php5-fpm и апача нет, и как то нет мыслей как указать php5-fpm о том, где брать файлы. В настройках виртуал хоста, документрут будет повидимому относиться к локальным файлам? или к удаленным?
РЕШЕНО!
Оказалось я двигался в неверном направлении. В итоге настроил proxy_pass и все заработало
как то нет мыслей как указать php5-fpm о том, где брать файлы
Если Вы о статике (картинки, стили, скрипты), то этим должен заниматься nginx, а не php-fpm. Если же Вы у путях к скриптам, то для этого в {Fast}GCI есть переменные SCRIPT_NAME и SCRIPT_FILENAME.
Максим Гречушников: учитывая исходную задачу (вынести нагруженный сайт на отдельную машину) я бы посоветовал просто на обоих машинах поставить свой nginx и свой php-fpm. Зачем им вообще общаться? Два отдельных сайта же.
Если же Вы непременно хотите, чтобы у всех сайтов был один фронт-энд, то на второй сервер имеет смысл выносить только базу данных и исполнение скриптов, а статику хранить на том же сервере, где стоит nginx. Просто представьте разницу по времени между чтением файла с диска и получением файла с другого сервера. Получать статику с другого сервера — лишняя нагрузка, которая может съесть весь выигрыш от второго сервера.
Ну и если я Вас таки не убедил (или всё же есть весомые причины), то поднимите на новом сервере ещё один nginx, настройте его только на отдачу статики, а на фронт-энде используйте ngx_http_proxy_module, настраивайте обратный HTTP прокси. Это единственный правильный способ заставить nginx получать файлы с другой машины и отдавать их клиенту.
Максим Гречушников: точно, об этом как-то не подумал. В таком случае или храните статические файлы на первом сервере (если позволяет место на диске), либо смотрите на тот модуль, на который я сослался. У nginx хорошая документация, если будут конкретные вопросы — обращайтесь.
Максим Гречушников: конфиг, приведённый в соседнем ответе, в принципе должен работать. FPM на той машине запущен? Порт 9000 слушает? Как вообще проявляется проблема с запуском?
Итак, в качестве настроек nginx у меня используется шаблон https://github.com/Umkus/nginx-boilerplate
на второй машине я поставил для тестов apache2 и php5-fpm чтоб хоть кто то из них мне ответил уже в конце концов)
на второй машине указал php слушать все ip на порту 9000, apache2 по умолчанию слушает 80.
на первой машине создал виртуалхост. указал нужный апстрим на второй сервер. перезапустил все.
ко второму не стучится совсем. но обрабатывает локальные файлы. например по такому же root /var/www/sites на первой машине лежит phpinfo и его мне показывает. а я же жду ответа от второго
Максим Гречушников лучше приведите конфиг для сайта, который должен быть на новой машине, на словах плохо понятно. И что значит не стучится? Что есть в логах? Если ничего, попробуйте логирование в режиме debug.