最近用了nodejs搭建服务器,而后用了nginx作了反向代理,项目开发需求,没办法。可是发现了通过代理以后发现网页请求变慢了,并且是不能忍的一分钟以上。node
一开始,怀疑是在nodejs那边的问题,结果在nodejs那边进行了判断(经过写测试代码),可是发现是通过了一分多钟请求才到nodejs这边,那么只能先排除nodejs这方面的问题。nginx
那么要排除nginx的问题,个人环境是 windows7(x64) nginx(1.62) nodejs(4.23),配置以下shell
server { listen 80; server_name mysite.com; 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:3333; } }
这是一个比较普通的配置,找不出来问题,那么只能去找错误日志了,忽然发现错误日志error.log里面有这么一段代码windows
2015/12/25 16:30:43 [error] 7652#7008: *1 upstream timed out (10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond) while connecting to upstream, client: 127.0.0.1, server
以前没怎么留意错误日志,罪过了啊,那么既然发现了这个错误,找方法就简单多了。后端
像是nodejs那边没有给nginx及时响应,那么能够增长这几个配置来解决(单位为秒)服务器
proxy_connect_timeout 1; proxy_send_timeout 30; proxy_read_timeout 60;
这三个设置的定义是:测试
proxy_connect_timeout
后端服务器链接的超时时间_发起握手等候响应超时时间
proxy_read_timeout
链接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也能够说是后端服务器处理请求的时间)
proxy_send_timeout
后端服务器数据回传时间_就是在规定时间以内后端服务器必须传完全部的数据
spa
添加以后,就解决了,完整的是: 代理
server { listen 80; server_name mysite.com; 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_connect_timeout 1; proxy_send_timeout 30; proxy_read_timeout 60; proxy_pass http://localhost:3333; } }