У меня возникли некоторые проблемы с конфигурацией Nginx. Начиная с обратного прокси-сервера SSL-терминатора nginx
, я использую настройку docker-compose.yml
с несколькими контейнерами, каждый из которых предоставляет виртуальный сервис. Эти сервисы предоставляются в виде подкаталогов под одним именем хоста:
net --443--> nginx
| | `--- ContainerA "https://example.com/serviceA/"
| `----- ContainerB "https://example.com/serviceB/"
`------- ContainerC "https://example.com/serviceC/"
Фрагменты списков процессов:
nginx:~$ ps fax
127285 ? Ss 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf -g daemon off;
127419 ? S 0:00 \_ nginx: worker process
127420 ? S 0:00 \_ nginx: worker process
127421 ? S 0:00 \_ nginx: worker process
ContainerA:~$ ps fax
127132 ? Ss 0:09 php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf)
234053 ? S 8:27 \_ php-fpm: pool www
236952 ? S 8:12 \_ php-fpm: pool www
259123 ? S 6:42 \_ php-fpm: pool www
Я думал, что эффективность будет достигнута за счет запуска одного экземпляра nginx
и использования php-fpm
в каждом из контейнеров.
Я думаю, что предпосылка php-fpm
такова, что контейнерам не нужны свои собственные процессы nginx
; процессы nginx
связываются с каждым контейнером через порт 9000 (сетевая часть работает). На практике, однако, у меня возникают проблемы, поэтому я должен проверить, что моя предпосылка обоснована:
Является ли это предположение базовой архитектуры nginx
и php-fpm
правильным? В качестве альтернативы, является ли надлежащая инфраструктура nginx
/php-fpm
предназначенной для использования php-fpm
в прямом согласии (тот же хост и файловая система), или разумно и эффективно ли мультихостинг /мультифайловая система?
(Недавно я обратился за помощью, и их первым ответом было «вам нужно запустить nginx
в каждом контейнере», что не имело смысла для моего понимания php-fpm
.)
(Здесь есть множество вопросов, которые задают конкретные вопросы по nginx.conf
, а не об этой заведомо высокоуровневой архитектуре.)