最近在和腾讯的合作的项目中 需要把代码部署到对方服务器上,期间总是出现一些奇怪的js报错 重启node服务后一般就正常了 ,临近上线了 昨天专门跟进了这个问题。因为js是压缩合并过的 ,当不合并时正常 ,所以初步定位是合并后的文件出现问题,修改服务端代码 改用未压缩版本合并后输出 ,firebug报错很明确的指出是语法错误 括号没闭合 ,下载下来看果然 合并的js是半截的....
调试后发现node合并的文件是完整的 也就是说 从node输出是正常的 经过nginx后就少了,跟踪nginx错误日志 发现是nginx下的proxy_temp没有写入权限( nginx 日志failed (13: Permission denied) while reading upstream) 。。。
修改权限后 世界正常了。
比较有意思的是 proxy_temp没有写入权限 不会导致文件完全为空,看来nginx处理是先输出buffer的内容 超过buffer_size的再去proxy_temp里找
附录:
nginx 反向代理参数说明
proxy_connect_timeout 600; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_read_timeout 600; #连接成功后,后端服务器响应时间(代理接收超时)
proxy_send_timeout 600; #后端服务器数据回传时间(代理发送超时)
proxy_buffer_size 32k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传