django +nginx +uwsgi 上传 图片超过 10k 就出现 500 Internal Server Error nginx/1.10.2 错误?

2017-08-20 18:44:50 +08:00
 bb2018
django +nginx +uwsgi 上传 图片超过 10k 就出现 500 Internal Server Error nginx/1.10.2 错误? 在本机环境上没有问题。一上服务器就出现这问题?

是 nginx 哪里需要设置?
4995 次点击
所在节点    Python
27 条回复
virusdefender
2017-08-20 18:52:28 +08:00
看 nginx 的 error_log
forcecharlie
2017-08-20 18:55:53 +08:00
proxy_temp 目录权限是不是有问题?
ytmsdy
2017-08-20 19:01:52 +08:00
直接用 python manager.py runserver 运行是否有这样的问题?
如果没有,在上 nginx 代理,看看有没有出现问题?
如果没有,那就是 uwsgi 的问题了。
LZ 可以试试看把 uwsgi 的线程数增加到 8 看看情况怎么样。
bb2018
2017-08-20 19:31:42 +08:00
@virusdefender

有这个错误:

2017/08/20 19:20:16 [crit] 1323#0: *11 open() "/var/lib/nginx/tmp/client_body/0000000002" failed (13: Permission denied), client: 112.227.240.138, server: aaabbb.com, request: "POST /user/user_change/sdut/ HTTP/1.1", host: "aaabbb.com", referrer: "http://aaabbb.com/user/user_change/sdut/"
2017/08/20 19:24:40 [crit] 1323#0: *33 open() "/var/lib/nginx/tmp/client_body/0000000003" failed (13: Permission denied), client: 112.227.240.138, server: aaabbb.com, request: "POST /user/user_change/admin/ HTTP/1.1", host: "www.aaabbb.com", referrer: "http://www.aaabbb.com/user/user_change/admin/"
2017/08/20 19:27:54 [crit] 1323#0: *47 open() "/var/lib/nginx/tmp/client_body/0000000004" failed (13: Permission denied), client: 112.227.240.138, server: aaabbb.com, request: "POST /user/user_change/admin/ HTTP/1.1", host: "www.aaabbb.com", referrer: "http://www.aaabbb.com/user/user_change/admin/"
2017/08/20 19:28:03 [crit] 1323#0: *48 open() "/var/lib/nginx/tmp/client_body/0000000005" failed (13: Permission denied), client: 112.227.240.138, server: aaabbb.com, request: "POST /user/user_change/admin/ HTTP/1.1", host: "www.aaabbb.com", referrer: "http://www.aaabbb.com/user/user_change/admin/"

我在 /var/lib/nginx/tmp/执行:
chmod -vR 777 client_body

好像不管用。还是出这提示
bb2018
2017-08-20 19:32:27 +08:00
@forcecharlie

你好。
proxy_temp 这个目录在哪里? 是不是 /var/lib/nginx/tmp
bb2018
2017-08-20 19:36:39 +08:00
@ytmsdy

nginx 代理 这个怎么看?新手不太明白。不好意思


我在 vps 上操作的。用 putty

# maximum number of worker processes
processes = 8
这样改了还是老样子
forcecharlie
2017-08-20 20:02:13 +08:00
@bb2018 你的修改 /var/lib/nginx/tmp 权限。
Infernalzero
2017-08-20 20:13:33 +08:00
最简单办法是配置文件里指定 user root
CcChen
2017-08-20 20:20:34 +08:00
检查一下 tmp 目录磁盘是不是满了
bb2018
2017-08-20 20:23:51 +08:00
@forcecharlie

在 /var/lib/nginx/: 下
chmod -R 777 tmp
这样吗?
bb2018
2017-08-20 20:24:47 +08:00
@Infernalzero
nginx.conf 的配置里

还是 uwsgi.ini 里?
bb2018
2017-08-20 20:25:27 +08:00
@CcChen
刚重装的云服务器.里面就几个文件.
Lax
2017-08-20 20:43:04 +08:00
这个目录存在不存在? /var/lib/nginx/tmp/client_body/
Infernalzero
2017-08-20 20:43:16 +08:00
@bb2018 当然是 nginx.conf 了
要么把 nginx 的用户设置成 root,要么把那个目录的 owner 设置成 nginx 的用户
prasanta
2017-08-20 20:48:40 +08:00
nginx 的配置里要配置缓冲区大小
bb2018
2017-08-20 21:06:35 +08:00
@Lax
存在的
这是 /var/lib/nginx/tmp/下面的文件
client_body fastcgi proxy scgi uwsgi
bb2018
2017-08-20 21:08:43 +08:00
@Infernalzero
谢谢.
在 nginx.conf 里设置  user root; 这样是可以了.
如果还是用原先的我新建的用户 xxxuser
在:/var/lib/nginx/ 下
那需要:chown -R xxxuser:xxxuser   tmp
这样?
Infernalzero
2017-08-20 21:16:18 +08:00
所以最简单的就是设置下 nginx 启动的用户
要么是改下 nginx 配置里的 proxy_buffers,官方文档里都有的
只不过改 proxy_temp_file_write_size 和 proxy_max_temp_file_size 没有直接改用户来得方便,而且说不定你设了个值后面又超了
bb2018
2017-08-20 21:18:14 +08:00
@Infernalzero
谢谢.
那就在 nginx.conf 里设置  user root; 这样设置算了
newworld
2017-08-20 22:22:16 +08:00
@bb2018 做好别给 nginx 这么高的权限 你想的是方便 如果你的应用有漏洞 被别人黑进了你的应用 那么不用提权就是 root 了 别人怕是要笑死了 岂不美滋滋 新手不要养成这样的习惯 要注意安全问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/384378

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX