Nginx + PHP-FPM 7.1 - 504 Gateway Time-out
Je suis à court d'un nginx 1.12 et php-fpm 7.1 comme séparés des conteneurs docker sur un nas synology et je reçois un 504 Gateway erreur si le script php s'exécute de plus de 60 ans. J'ai essayé déjà plusieurs nginx paramètres de configuration, mais l'erreur est toujours présente.
Voici mes config nginx:
#user www-data;
#group http
worker_processes 1;
error_log /opt/data/logs/nginx_error.log notice;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#keepalive_timeout 30s;
sendfile on;
#tcp_nopush off;
tcp_nodelay on;
#gzip off;
send_timeout 300
server {
listen 80;
server_name "";
root /opt/php;
index index.php;
location /data/ {
sendfile on;
root /opt;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
# Mitigate https://httpoxy.org/vulnerabilities
fastcgi_param HTTP_PROXY "";
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_read_timeout 300;
#fastcgi_buffering off;
#fastcgi_keep_conn on;
#fastcgi_intercept_errors on;
#fastcgi_cache off;
#fastcgi_ignore_client_abort on;
}
location ~ ^/(status|ping)$ {
access_log off;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass php:9000;
}
}
}
Php testscript:
<?php
sleep(65);
echo "done!";
file_put_contents("/opt/data/timetest.txt", "\nEnd", FILE_APPEND);
Après des années 60, le navigateur affiche la 504 Gateway Time-out. Le script php est toujours en cours d'exécution et il est aussi écrit le texte dans le fichier.
Nginx errorlog:
2017/07/22 08:16:32 [error] 8#8: *10 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 172.17.0.1, server: , request: "GET /timetest.php HTTP/1.1", upstream: "fastcgi://172.17.0.3:9000", host: "192.168.0.100:8081"
Quelqu'un a une idée?
À mon humble avis php:9000 n'est pas accessible à partir de conteneur avec nginx.
OriginalL'auteur liquidmotion | 2017-07-22
Vous devez vous connecter pour publier un commentaire.
La question est probablement pourquoi est-ce que votre backend prendre tant de temps pour répondre? Pas sûr au sujet de votre cas d'utilisation, mais normalement il n'est pas facile d'attendre longtemps une réponse.
Pour répondre à votre question:
J'ai trouvé ce lien: https://easyengine.io/tutorials/php/increase-script-execution-time/
OriginalL'auteur Mathias