V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
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 · Aug 20, 2017 · 5517 views
    This topic created in 3173 days ago, the information mentioned may be changed or developed.
    django +nginx +uwsgi 上传 图片超过 10k 就出现 500 Internal Server Error nginx/1.10.2 错误? 在本机环境上没有问题。一上服务器就出现这问题?

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

    你好。
    proxy_temp 这个目录在哪里? 是不是 /var/lib/nginx/tmp
    bb2018
        6
    bb2018  
    OP
       Aug 20, 2017
    @ytmsdy

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


    我在 vps 上操作的。用 putty

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

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

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

    ```
    /var/
    /var/lib/
    /var/lib/nginx/
    /var/lib/nginx/tmp/ ---- 以上目录 nginxuser 可读访问
    /var/lib/nginx/tmp/client_body/ ---- nginxuser 可写
    ```
    bavtoex
        27
    bavtoex  
       Jun 27, 2021
    @Lax 谢谢,按照此方法修改权限成功了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1444 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 16:55 · PVG 00:55 · LAX 09:55 · JFK 12:55
    ♥ Do have faith in what you're doing.