Ich mache ein kleines Experiment, eine Hypothese, wenn Sie so wollen. Die Grundidee ist einfach: drei Docker-Container, einer ist einfach ein Datencontainer mit einer index.php drin bei /app/web/
, die einfach phpinfo();
ausgibt Das funktioniert gut.nginx + PHP-FPM: Fastcgi Parameter
Ich habe einen Nginx-Container, der auch gut funktioniert, und einen separaten PHP-FPM-Container. Beides sind die aus den offiziellen Bildern.
Ich hatte alles funktioniert gut mit einem Standard-Setup, und auch als Sicherheitsmaßnahme den Datencontainer nur an php-fpm gebunden, so Nginx hatte nicht einmal Zugriff auf die Datei selbst. Also ist der Datencontainer auf dem php-fpm Container bei /app
gemountet, und alles ist gut in der Welt.
All dies war in Ordnung. Dann begann ich mit einigen Variablen zu spielen.
Es ist mir aufgefallen, dass, wenn nginx nur die Variablen an php-fpm weitergibt, dann könnte ich wahrscheinlich einige der Parameter in nginx fastcgi Setup entfernen, denn warum würde es sie brauchen, wenn es nicht einmal Wissen was los ist?
kam es gut mit chroot
Set /app
, und ich fügte chdir
zu /web
, aber sobald ich PATH_TRANSLATED
von nginx entfernt, schlägt sie arbeiten. Ich entweder bekommen File not found.
oder No input file specified.
Hier ist die relevanten Teile nginx.conf des nginx-Behälter, ohne root
im nginx.conf angegeben:
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;
}
und die relevanten Teile des www.conf
Pool:
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
Irgendwelche Ideen?