我正在使用nginx和节点服务器来处理更新请求。当我请求大数据更新时,我收到网关超时。我从nginx错误日志中看到了此错误:
2016/04/07 00:46:04 [错误] 28599#0:* 1上游过早关闭连接,同时从上游读取响应标头,客户端:10.0.2.77,服务器:gis.oneconcern.com,请求:“ GET / update_mbtiles / atlas19891018000415 HTTP / 1.1”,上游:“ http://127.0.0.1:7777/update_mbtiles/atlas19891018000415”,主机:“ gis.oneconcern.com”
我搜索了该错误,并尝试了所有可能的方法,但仍然收到该错误。
我的nginx conf具有以下代理设置:
## # Proxy settings ## proxy_connect_timeout 1000; proxy_send_timeout 1000; proxy_read_timeout 1000; send_timeout 1000;
这是我的服务器的配置方式
server { listen 80; server_name gis.oneconcern.com; access_log /home/ubuntu/Tilelive-Server/logs/nginx_access.log; error_log /home/ubuntu/Tilelive-Server/logs/nginx_error.log; large_client_header_buffers 8 32k; location / { proxy_pass http://127.0.0.1:7777; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $http_host; proxy_cache_bypass $http_upgrade; } location /faults { proxy_pass http://127.0.0.1:8888; proxy_http_version 1.1; proxy_buffers 8 64k; proxy_buffer_size 128k; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; }
}
我正在使用nodejs后端在aws服务器上服务请求。仅在更新需要很长时间(大约3-4分钟)时才会显示网关错误。较小的更新没有任何错误。任何帮助将不胜感激。
节点js代码:
app.get("/update_mbtiles/:earthquake", function(req, res){ var earthquake = req.params.earthquake var command = spawn(__dirname + '/update_mbtiles.sh', [ earthquake, pg_details ]); //var output = []; command.stdout.on('data', function(chunk) { // logger.info(chunk.toString()); // output.push(chunk.toString()); }); command.stderr.on('data', function(chunk) { // logger.error(chunk.toString()); // output.push(chunk.toString()); }); command.on('close', function(code) { if (code === 0) { logger.info("updating mbtiles successful for " + earthquake); tilelive_reload_and_switch_source(earthquake); res.send("Completed updating!"); } else { logger.error("Error occured while updating " + earthquake); res.status(500); res.send("Error occured while updating " + earthquake); } }); }); function tilelive_reload_and_switch_source(earthquake_unique_id) { tilelive.load('mbtiles:///'+__dirname+'/mbtiles/tipp_out_'+ earthquake_unique_id + '.mbtiles', function(err, source) { if (err) { logger.error(err.message); throw err; } sources.set(earthquake_unique_id, source); logger.info('Updated source! New tiles!'); }); }
谢谢。
我认为来自Nginx的错误表明该连接已由您的nodejs服务器关闭(即“上游”)。如何配置nodejs?