我在这个超时问题上一直在挠头,希望能得到一些帮助。 我有一个可能需要2.5分钟才能返回响应的http请求。 我有3分钟的Angular超时处理,3分钟的NodeJS。 我的nginx设置有200秒超时,我的Elastic Load Balancing Connection Timeout设置为4分钟。 但是,我一直在2分钟内看到502坏的网关nginx 1.4.6(Ubuntu)的错误。 有没有我想念的部分有更长的超时时间?
我的nginx设置:
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; } }
我的NodeJS设置正在使用连接超时
var timeout = require('connect-timeout'); app.use(timeout(300000));
我刚刚遇到了这个,可能找到了答案 – 节点的http
模块中有120秒的硬编码超时。 我不得不在给定的请求处理程序中设置套接字超时:
yourHandler(req, res) { req.socket.setTimeout(3600e3); // 1 hour // ... do the real work res.json(...); }
您也可以将此限制设置为0
以禁用此超时。
https://nodejs.org/api/net.html#net_socket_settimeout_timeout_callback
最初找到答案在这里: https : //forum.nginx.org/read.php?2,214230,214239#msg-214239