Nginx 502 Bad Gateway lors du téléchargement de fichiers

J’obtiens l’erreur suivante lorsque j’essaie de télécharger des fichiers vers mon application Web basée sur node.js:

2014/05/20 04:30:20 [error] 31070#0: *5 upstream prematurely closed connection while reading response header from upstream, client: ... [clipped] 

J’utilise un proxy frontal ici:

  upstream app_mywebsite { server 127.0.0.1:3000; } server { listen 0.0.0.0:80; server_name {{ MY IP}} mywebsite; access_log /var/log/nginx/mywebsite.log; # pass the request to the node.js server with the correct headers and much more can be added, see nginx config options location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://app_mywebsite; proxy_redirect off; # web socket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } 

Voici mon fichier nginx.conf:

 user www-data; worker_processes 4; pid /run/nginx.pid; events { worker_connections 2048; multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 20; types_hash_max_size 2048; # server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; # default_type application/octet-stream; default_type text/html; charset UTF-8; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_min_length 256; gzip_comp_level 5; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; ## # nginx-naxsi config ## # Uncomment it if you installed nginx-naxsi ## #include /etc/nginx/naxsi_core.rules; ## # nginx-passenger config ## # Uncomment it if you installed nginx-passenger ## #passenger_root /usr; #passenger_ruby /usr/bin/ruby; ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } 

Une idée sur la façon de mieux déboguer ceci? Les choses que j’ai trouvées n’ont pas vraiment fonctionné (par exemple, en supprimant la barre oblique

Essayez d’append ce qui suit à votre server{} , j’ai pu résoudre un problème de proxy inverse Nginx en définissant ces atsortingbuts proxy:

 # define buffers, necessary for proper communication to prevent 502s proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; 

Essayez d’append les éléments suivants à la section http de votre /etc/nginx/nginx.conf :

 fastcgi_read_timeout 400s; 

et redémarrez nginx.

Autres lectures: nginx docs

Essaye ça:

client_max_body_size – Taille maximale du fichier téléchargeable

 http { send_timeout 10m; client_header_timeout 10m; client_body_timeout 10m; client_max_body_size 100m; large_client_header_buffers 8 32k; } 

et section serveur:

 server { location / { proxy_buffer_size 32k; } } 

large_client_header_buffers 8 32k et proxy_buffer_size 32k – est suffisant pour la plupart des scripts, mais vous pouvez essayer 64k, 128k, 256k …

(désolé, je ne parle pas anglais) =)

Donc à la fin j’ai fini par changer dans mon keepalive de 20 à 64 et il semble gérer les gros fichiers maintenant. Le problème, c’est que j’ai réécrit à partir de zéro la bibliothèque de téléchargement d’images que j’utilisais, mais j’ai au moins appris quelque chose.

 server { location / { keepalive 64 } }