У меня есть три сервера php-fpm и один сервер nginx, где я хочу сбалансировать php-fpm с помощью сервера nginx.
php-fpm server1 — 192.168.10.31
php-fpm server2 — 192.168.10.32
php-fpm server3 — 192.168.10.33
nginx — сервер — 192.168.10.12
Моя конфигурация на сервере nginx была;
upstream php_backend {
server 192.168.10.31:9000;
server 192.168.10.32:9000;
server 192.168.10.33:9000;
}
location ~ \.php$ {
fastcgi_pass php_backend;
}
Но моя проблема в том, где я должен определить webroot [root / path / to / webfiles]
Поскольку на сервере nginx [192.168.10.12] в журнале доступа указано, что файл не найден — 404. Где мне хранить php-файлы веб-сайта? На сервере nginx или php серверах? или на обоих серверах nginx и php?
Это своего рода старый вопрос, но я дам свой ответ всем, кто ищет это.
Комментарий Робби Аверилла верен. Вы должны размещать свои файлы на серверах Nginx и PHP. Вы можете сделать это с помощью общего ресурса NFS, но это может замедлить работу.
Чтобы обойти это, вы можете обновить свой код на сервере nginx, а затем rsync для серверов php.
Вы можете легко создать bash-скрипт, который делает что-то вроде:
rsync -avzp -e ssh /srv/www/ [email protected]:/srv/www/
rsync -avzp -e ssh /srv/www/ [email protected]:/srv/www/
rsync -avzp -e ssh /srv/www/ [email protected]:/srv/www/
Конечно, вы захотите включить это в один скрипт bash, который выполняет обновление вашего кода и синхронизирует машины php.
Других решений пока нет …