2016-07-29 11 views
3

Ich habe mir den Kopf über dieses Timeout Problem und hoffe, einige Hilfen bekommen. Ich habe eine HTTP-Anfrage, die 2,5 Minuten dauern kann, um die Antwort zurückzugeben. Ich habe Timeout-Handling in Angular für 3 Minuten und NodeJS für 3 Minuten. Meine nginx-Einstellung hat 200 Sekunden Zeitüberschreitung und mein Elastic Load Balancing Connection Timeout ist auf 4 Minuten festgelegt. Allerdings sehe ich den Fehler 502 schlechtes Gateway nginx 1.4.6 (Ubuntu) bei genau 2 Minuten. Gibt es einen Teil, den ich vermisse, eine längere Zeitüberschreitung zu haben?Http Anfrage Timeout um 2 Minuten in NGINX 502 schlechtes Gateway in Node App

Meine nginx Einstellung:

server { 
    listen 80; 
    server_name; 
    access_log /var/log/nginx/access.log; 
    error_log /var/log/nginx/error.log debug; 
    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_set_header Connection ""; 
     proxy_http_version 1.1; 
     proxy_pass http://localhost:8060; 
     proxy_redirect off; 
     proxy_connect_timeout 200s; 
     proxy_send_timeout 200s; 
     proxy_read_timeout 200s; 
     send_timeout 200s; 
    } 
    #Handle protected assets using 'internal' directive documented here: https://www.nginx.com/resources/wiki/start/topics/examples/x-accel/ 
    location /protected { 
     internal; 
     expires -1; 
    } 
} 

Meine NodeJS Einstellung wird mit connect-Timeout

var timeout = require('connect-timeout'); 
app.use(timeout(300000)); 
+0

Haben Sie versucht, die 'keepalive' Einstellung' client_header' und 'client_body' Timeouts? –

+0

Ja, ich habe diese ausprobiert und habe immer noch das gleiche Problem. –

+0

Haben Sie das jemals herausgefunden? – Morgan

Antwort

1

ich auf diese heute nur kam, und fand wahrscheinlich eine Antwort - es hart codiert Timeout beträgt 120 s in Knoten http Modul. Ich hatte Socket-Timeout in bestimmten Request-Handler wie folgt festgelegt:

yourHandler(req, res) { 
    req.socket.setTimeout(3600e3); // 1 hour 

    // ... do the real work 

    res.json(...); 
} 

Sie auch diese Grenze zu 0 festlegen können dieses Timeout zu deaktivieren.

https://nodejs.org/api/net.html#net_socket_settimeout_timeout_callback

gefunden ursprünglich die Antwort hier: https://forum.nginx.org/read.php?2,214230,214239#msg-214239

Verwandte Themen