以root身份通过sudo启动uWSGI时网站报502错误的排查与解决
Nginx + Django + uWSGI:sudo切换用户启动uWSGI引发502 Bad Gateway的解决方法
问题场景
按官方文档配置Nginx、Django和uWSGI后,出现如下异常:
- 直接以普通用户
lunchspace运行自定义启动脚本时,uWSGI启动正常,网站可正常访问 - 以root身份通过
sudo -iu lunchspace /home/lunchspace/runuwsgi切换用户启动uWSGI时,网站返回502 Bad Gateway
启动脚本内容:
#!/bin/bash cd /home/lunchspace/FridayLunch/ uwsgi --ini lunchspace_uswgi.ini #uwsgi --socket /home/lunchspace/lunchspace.sock --module FridayLunches.wsgi #uwsgi --emperor /etc/uwsgi/vassals
排查过程
- 查看Nginx日志,确认请求已成功转发到指定的socket文件
- 检查socket文件存在,但权限为
srwxr-xr-x,Nginx进程对该socket无读写权限 - 临时将socket权限改为
777后,网站恢复正常,锁定问题根源为socket权限配置
解决方案
在uWSGI的ini配置文件中,显式设置socket的权限,确保Nginx进程可以读写该socket:
# 在lunchspace_uswgi.ini中添加以下配置 socket = /home/lunchspace/lunchspace.sock chmod-socket = 664
备注:如果Nginx进程所属用户(如
www-data或nginx)与uWSGI运行用户lunchspace属于同一组,664权限足够;若不在同一组,可根据实际情况调整用户组归属,或临时使用666权限(不推荐生产环境)。
内容的提问来源于stack exchange,提问作者RustyCar
相关产品推荐
相关产品推荐

