Nginx 作为代理服务器,加载JS文件报错,net::ERR_CONTENT_LENGTH_MISMATCH

当使用Nginx作为代理服务器时,遇到加载JS文件报net::ERR_CONTENT_LENGTH_MISMATCH错误,原因是proxy_temp目录权限问题。Nginx的工作进程(nobody用户)在尝试访问由webapp用户启动的主进程缓存的大型文件时权限不足。解决方案是停止Nginx,将所有目录权限更改为webapp用户,然后在nginx.conf中添加'user webapp;'指令,最后以webapp用户身份重启Nginx。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

]![在登陆后台服务报错如下:

查看nginx 日志发现报错

[root@iZ62t11vp0xZ logs]# tail error.log 
2016/11/11 15:04:20 [crit] 8655#0: *21 open() "/usr/local/nginx/proxy_temp/1/00/0000000001" failed (13: Permission denied) while reading upstream, client: XXXXXXXX, server: agent.ibingogame.net, request: "GET /agent-server-webapp/res/js/easyui/jquery.easyui.min.js HTTP/1.1", upstream: "http://127.0.0.1:9081/agent-server-webapp/res/js/easyui/jquery.easyui.min.js", host: "58.96.175.135", referrer: "http://XXXXXXXX/agent-server-webapp/adminHome"

发现是由于%nginx% 目录下的proxy_temp 没有权限造成的
ginx 的工作进程对大文件做了缓存,这个缓存在 %nginx%/proxy_temp 目录下,主进程在读取缓存的时候由于权限问题而无法访问。ps nginx 可以看出主进程用户是 webapp(启动 nginx 的用户),工作者进程是 nobody 用户(nginx 默认的工作者用户就是 nobody,如果你没有配 user 指令的话),proxy_temp 目录所有者就是工作者进程的用户(可以 ll proxy_temp 对此进行验证)。
停止 nginx(nginx -s stop),chown -R 对 nginx 所有目录权限重新设定成 webapp,然后在 nginx.conf 的 worker_processes 指令前添加指令
user webapp;
最后 webapp 用户重启 nginx 即可。

参考资料:
http://stackoverflow.com/questions/25993826/err-content-length-mismatch-on-nginx-and-proxy-on-chrome-when-loading-large-file

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值