Nginx 502 Bad Gateway

项目使用nginx+uwsgi+django部署,访问显示 Nginx 502 Bad Gateway

查看nginx日志报错:

# cat /var/log/nginx/error.log
failed(111: Connection refused) while connecting to upstream)

报错显示nginx 访问uwsgi被拒绝。
很多博客说是php相关错误,但我并没有用到php,应该是网络和端口的问题,比如ip、防火墙、服务器端口被占用等,接下来检查一下:(用阿里云服务器注意检查有没有将部署端口加入安全组)

# telnet ip
........connect refused

报错显示端口没有开放,考虑是防火墙关系,去打开需要的端口:

# iptables -I INPUT -s 0.0.0.0 -p tcp --dport 8000 -j ACCEPT #放行8000端口
# service iptables save #保存配置
# service iptables restart #重启防火墙

已经通过防火墙打开了端口,重启服务:

# uwsgi --reload uwsgi.pid          # 重启

二、今天又出现 Nginx 502 Bad Gateway

但是试试静态资源,http://0.0.0.0/static/img/1.png可以打开,所以nginx没有问题,应该是uwsgi出错。查看uwsgi错误日志:

!!!!!!!!!!!!!! WARNING !!!!!!!!!!!!!!
no request plugin is loaded, you will not be able to manage requests.
you may need to install the package for your language of choice, or simply load
it with --plugin.
!!!!!!!!!!! END OF WARNING !!!!!!!!!!

“uWSGI:未加载任何请求插件,您将无法管理请求”,在网上找了半天,很多人说需要“sudo apt-get install uwsgi-plugin-python”,但对我没用,后来发现其实是因为我使用了root 用户来启动uwsgi:

# sudo uwsgi --ini uwsgi.ini  # 使用了root用户来启动uwsgi

但其实我的项目在conda环境中,我安装的uwsgi在我的虚拟环境中,并不能通过root用户去运行,正确的命令应该是;

# uwsgi --ini uwsgi.ini   
[uWSGI] getting INI configuration from uwsgi.ini       

使用错误命令后,错误日志报错:

lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
probably another instance of uWSGI is running on the same address (127.0.0.1:8000).
bind(): Address already in use [core/socket.c line 769]

显示地址已经被占用,这时需要kill掉这些sudo启动的uwsgi进程:

# ps -ef |grep uwsgi
root      8286     1  0 18:08 ?        00:00:00 uwsgi --start uwsgi.ini
root     12876  8286  0 21:30 ?        00:00:00 uwsgi --start uwsgi.ini
# kill -9 8286

最后再重新启动即可:

# uwsgi --ini uwsgi.ini
[uWSGI] getting INI configuration from uwsgi.ini  

有时如果修改了uwsgi.ini就需要重启:

# uwsgi --reload uwsgi.pid 
signal_pidfile()/kill(): No such process [core/uwsgi.c line 1695]

对于这个报错,依然先查看进程;

# ps -ef |grep uwsgi
xxx   19451 19443  0 22:05 ?        00:00:00 uwsgi --ini uwsgi.ini

然后打开uwsgi.pid,发现不是19443,更改为19443
最后重启:

# uwsgi --reload uwsgi.pid 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值