Я делаю небольшой эксперимент, гипотеза, если хотите. Основная идея проста: три контейнера Docker, один - это контейнер данных с индексом.php в нем на /app/web/
, который просто выводит phpinfo();
. Это прекрасно работает.nginx + PHP-FPM: Выполнение параметров fastcgi
У меня есть контейнер nginx, который также работает нормально, и отдельный контейнер PHP-FPM. Оба они взяты из официальных изображений.
У меня было все нормально работать со стандартной настройкой, и даже в качестве меры безопасности привязывался контейнер данных только к php-fpm, поэтому nginx даже не имел доступа к самому файлу. Таким образом, контейнер данных монтируется на контейнере php-fpm по адресу /app
, и все это хорошо в мире.
Все это было хорошо. Затем я начал играть с некоторыми переменными.
Мне пришло в голову, что на самом деле, если nginx просто передает переменные в php-fpm, то я мог бы, вероятно, удалить некоторые параметры в настройке fastgingi nginx, потому что зачем им это нужно, если это даже не знаете, что происходит?
Дела шли хорошо с chroot
набор для /app
, и я добавил chdir
к /web
, но как только я удалил PATH_TRANSLATED
от Nginx, он не работает. Я либо получить File not found.
или No input file specified.
Здесь не соответствующие части nginx.conf Nginx контейнера, не root
указан в nginx.conf:
location/{
index index.php;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
fastcgi_index index.php;
fastcgi_param HTTPS $https;
fastcgi_param HTTP_PROXY '';
fastcgi_intercept_errors on;
fastcgi_pass php-fpm:9000;
break;
}
и соответствующих частях www.conf
бассейна:
chroot = /app
; Chdir to this directory at the start.
; Note: relative path can be used.
; Default Value: current directory or/when chroot
chdir = /web
php_admin_value[doc_root] = /app/web
Любые идеи?