2017-07-19 1 views
0

J'ai un Hapi.js, Node backend configuré pour accepter les fichiers jusqu'à 20M de mon front-end React qui fonctionne bien pour le téléchargement de gros fichiers en développement sans NGINX. Quand j'inclus NGINX en production, j'obtiens 408 erreurs dans le navigateur et pourtant rien dans le journal des erreurs NGINX.Suspect nginx client_max_body_size ne fonctionne pas sur 408 erreurs

Comme seuls les fichiers de moins de 1 Mo peuvent être téléchargés avec succès, j'ai supposé que le problème était que la taille de client_max_body était de 1 Mo par défaut. Cependant, peu importe où j'augmente cela (c.-à-d. Http, serveur, emplacement), cela n'a aucun effet. Voici ma config NGINX entière.

Je me demande si quelqu'un d'autre a fait l'expérience de cela, ou a une idée pourquoi les erreurs 408 n'apparaissent pas dans le journal? J'apprécierais volontiers de l'aide.

events { 
     worker_connections 1024; 
     # multi_accept on; 
} 

http { 

     sendfile       on; 
     tcp_nopush      on; 
     tcp_nodelay      on; 
     keepalive_timeout     65; 
     types_hash_max_size    2048; 

     client_header_timeout    3m; 
     client_body_timeout    3m; 
     send_timeout      3m; 
     client_header_buffer_size   1k; 
     large_client_header_buffers  4 4k; 

     client_max_body_size    20M; 

     include /etc/nginx/mime.types; 
     default_type application/octet-stream; 


     ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE 
     ssl_prefer_server_ciphers on; 

     access_log /var/log/nginx/access.log; 
     error_log /var/log/nginx/error.log; 

     gzip on; 
     gzip_disable "msie6"; 

     server { 
       listen 80 default_server; 
       listen [::]:80 default_server; 

       client_max_body_size 20M; 

       server_name _; 
       root /var/www/front; 
       index index.html index.htm; 

       location ~* \.(?:manifest|appcache|html?|xml|json)$ { 
         add_header Access-Control-Allow-Origin *; 
         expires -1; 
         client_max_body_size 20M; 
       } 

       location ~* \.(?:css|js)$ { 
         add_header Access-Control-Allow-Origin *; 
         try_files $uri =404; 
         expires 1y; 
         access_log off; 
         add_header Cache-Control "public"; 
         client_max_body_size 20M; 
       } 

       location ~ ^.+\..+$ { 
         add_header Access-Control-Allow-Origin *; 
         try_files $uri =404; 
         client_max_body_size 20M; 
       } 

       location/{ 
         add_header Access-Control-Allow-Origin *; 
         try_files $uri $uri/ /index.html; 
         client_max_body_size 20M; 
       } 


       location /api { 
         proxy_set_header Access-Control-Allow-Origin *; 
         proxy_pass http://my-ip-address:3000; 
         proxy_http_version 1.1; 
         proxy_set_header Upgrade $http_upgrade; 
         proxy_set_header Connection 'upgrade'; 
         proxy_set_header Host $host; 
         proxy_cache_bypass $http_upgrade; 

         client_max_body_size 20M; 

         client_body_buffer_size 128k; 
         client_body_temp_path /var/nginx/client_body_temp; 
         proxy_connect_timeout 70; 
         proxy_send_timeout 90; 
         proxy_read_timeout 90; 
         proxy_buffer_size 4k; 
         proxy_buffers 4 32k; 
         proxy_busy_buffers_size 64k; 
         proxy_temp_file_write_size 64k; 
         proxy_temp_path /var/nginx/proxy_temp; 
       } 


     } 
} 

Répondre

0

Quand j'avais des problèmes avec la taille du corps, nginx me donner une erreur 413 et j'ai pu le fixer avec client_max_body_size, donc cela peut être autre chose. Selon les docs nginx, 408 erreurs peuvent être renvoyées en raison de paramètres dans client_body_timeout ou client_header_timeout mais les vôtres sont déjà réglés sur 3m, donc je ne sais pas si cela s'applique. Peut-être essayer de mettre ces valeurs folles haut pour voir si cela aide?