V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
bb2018
V2EX  ›  Python

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

  •  
  •   bb2018 · 2017-08-20 18:44:50 +08:00 · 4962 次点击
    这是一个创建于 2650 天前的主题,其中的信息可能已经有所发展或是发生改变。
    django +nginx +uwsgi 上传 图片超过 10k 就出现 500 Internal Server Error nginx/1.10.2 错误? 在本机环境上没有问题。一上服务器就出现这问题?

    是 nginx 哪里需要设置?
    27 条回复    2021-06-27 16:53:30 +08:00
    virusdefender
        1
    virusdefender  
       2017-08-20 18:52:28 +08:00
    看 nginx 的 error_log
    forcecharlie
        2
    forcecharlie  
       2017-08-20 18:55:53 +08:00
    proxy_temp 目录权限是不是有问题?
    ytmsdy
        3
    ytmsdy  
       2017-08-20 19:01:52 +08:00
    直接用 python manager.py runserver 运行是否有这样的问题?
    如果没有,在上 nginx 代理,看看有没有出现问题?
    如果没有,那就是 uwsgi 的问题了。
    LZ 可以试试看把 uwsgi 的线程数增加到 8 看看情况怎么样。
    bb2018
        4
    bb2018  
    OP
       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
        5
    bb2018  
    OP
       2017-08-20 19:32:27 +08:00
    @forcecharlie

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

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


    我在 vps 上操作的。用 putty

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

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

    还是 uwsgi.ini 里?
    bb2018
        12
    bb2018  
    OP
       2017-08-20 20:25:27 +08:00
    @CcChen
    刚重装的云服务器.里面就几个文件.
    Lax
        13
    Lax  
       2017-08-20 20:43:04 +08:00
    这个目录存在不存在? /var/lib/nginx/tmp/client_body/
    Infernalzero
        14
    Infernalzero  
       2017-08-20 20:43:16 +08:00
    @bb2018 当然是 nginx.conf 了
    要么把 nginx 的用户设置成 root,要么把那个目录的 owner 设置成 nginx 的用户
    prasanta
        15
    prasanta  
       2017-08-20 20:48:40 +08:00 via Android
    nginx 的配置里要配置缓冲区大小
    bb2018
        16
    bb2018  
    OP
       2017-08-20 21:06:35 +08:00
    @Lax
    存在的
    这是 /var/lib/nginx/tmp/下面的文件
    client_body fastcgi proxy scgi uwsgi
    bb2018
        17
    bb2018  
    OP
       2017-08-20 21:08:43 +08:00
    @Infernalzero
    谢谢.
    在 nginx.conf 里设置  user root; 这样是可以了.
    如果还是用原先的我新建的用户 xxxuser
    在:/var/lib/nginx/ 下
    那需要:chown -R xxxuser:xxxuser   tmp
    这样?
    Infernalzero
        18
    Infernalzero  
       2017-08-20 21:16:18 +08:00
    所以最简单的就是设置下 nginx 启动的用户
    要么是改下 nginx 配置里的 proxy_buffers,官方文档里都有的
    只不过改 proxy_temp_file_write_size 和 proxy_max_temp_file_size 没有直接改用户来得方便,而且说不定你设了个值后面又超了
    bb2018
        19
    bb2018  
    OP
       2017-08-20 21:18:14 +08:00
    @Infernalzero
    谢谢.
    那就在 nginx.conf 里设置  user root; 这样设置算了
    newworld
        20
    newworld  
       2017-08-20 22:22:16 +08:00 via iPhone
    @bb2018 做好别给 nginx 这么高的权限 你想的是方便 如果你的应用有漏洞 被别人黑进了你的应用 那么不用提权就是 root 了 别人怕是要笑死了 岂不美滋滋 新手不要养成这样的习惯 要注意安全问题
    Lax
        21
    Lax  
       2017-08-20 22:29:38 +08:00
    user root 之后,
    以后再想改回来又会遇到一堆权限问题 !O!
    日志轮转可能突然权限不够了
    Loyalsoldier
        22
    Loyalsoldier  
       2017-08-21 00:19:13 +08:00
    Permission deny 就是目录没有写入权限咯
    skydiver
        23
    skydiver  
       2017-08-21 01:13:57 +08:00 via Android
    每次遇到权限问题就一帮人 chmod 777 摊手
    bb2018
        24
    bb2018  
    OP
       2017-08-21 19:24:20 +08:00
    @newworld
    我的应用基本不用上传图片,就一个头像需要.大于 10K 就提示上面的那些权限错误.
    小于 10K 就没事.
    如果在 nginx.conf 用 
    user nginxuser
    需要给 /var/lib/nginx/tmp/client_body/ 它设上可读写等权限? 还是要怎么做?
    bb2018
        25
    bb2018  
    OP
       2017-08-21 19:25:16 +08:00
    @Lax 是的,这是个问题
    所以现在最好解决
    在 nginx.conf 用 
    user nginxuser
    时 /var/lib/nginx/tmp/client_body/  权限不够的问题.
    Lax
        26
    Lax  
       2017-08-23 12:10:46 +08:00
    都看一下吧:

    ```
    /var/
    /var/lib/
    /var/lib/nginx/
    /var/lib/nginx/tmp/ ---- 以上目录 nginxuser 可读访问
    /var/lib/nginx/tmp/client_body/ ---- nginxuser 可写
    ```
    bavtoex
        27
    bavtoex  
       2021-06-27 16:53:30 +08:00
    @Lax 谢谢,按照此方法修改权限成功了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3145 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 10:44 · PVG 18:44 · LAX 02:44 · JFK 05:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.