Augmenter fastcgi_read_timeout pour un itinéraire unique

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 audessus de l’emplacement regex existant afin qu’il prenne le pas.

Voir ce document pour la syntaxe d’emplacement.