J’ai la configuration Nginx suivante pour transférer les requêtes vers un backend PHP-FPM:
server { ... location / { try_files $uri $uri/ /index.php$is_args$args; } location ~* \.php$ { fastcgi_split_path_info ^(.+?\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root/index.php; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; } }
Un itinéraire spécifique dans l’application nécessite un paramètre php max_execution_time
légèrement plus long. Je l’ai configuré avec succès et vérifié qu’il fonctionne en définissant un fastcgi_read_timeout
plus fastcgi_read_timeout
dans la configuration ci-dessus.
Cependant, je n’ai pas besoin que cela s’applique à chaque itinéraire. Je suppose que j’ai besoin d’un endroit nested quelque part, mais rien ne semble fonctionner!
La directive fastcgi_read_timeout
ne semble pas accepter les valeurs dynamics. Par conséquent, un bloc d’emplacement distinct pour l’ itinéraire spécial sera requirejs. En regardant votre fichier de configuration, je suppose que la route spéciale est un URI unique traité par le script /index.php
. Quelque chose comme ça devrait fonctionner:
location ^~ /special/route/uri { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root/index.php; fastcgi_pass 127.0.0.1:9000; fastcgi_read_timeout 100s; }
Vous pouvez utiliser un emplacement de préfixe avec le modificateur ^~
(comme ci-dessus) pour remplacer l’emplacement de regex qui traite généralement les fichiers PHP. Vous pouvez également utiliser un emplacement regex, mais placez – le au – dessus de l’emplacement regex existant afin qu’il prenne le pas.
Voir ce document pour la syntaxe d’emplacement.