日常使用环境下,树莓派没有显示器连接,想查看其使用状态,十分不便,故为其安装dashboard通过网页实时显示使用情况。在之前已经部署过LNMP环境,查看/var/www/目录下还有测试的php version页面,想必当初已经测试无误,但不知道为何现在访问会回显502 Bad Gateway错误,为此进行排查。
502 Bad Gateway错误通常表示反向代理无法与上游服务器建立连接。常见原因包括但不限于:
- 权限问题
- Nginx配置问题
- 树莓派硬件资源问题
- 端口冲突问题
- 防火墙问题
- 上游服务器问题
权限问题
问题描述:nginx用户(一般是www-data)没有权限访问上游服务。
解决方法:
sudo chown -R www-data:www-data /var/wwwNginx配置问题
问题描述:nginx的服务器配置文件中的php-fpm相关设置错误。
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 一般错误的都是php-fpm的版本号
# 省略其他内容
}解决方法:
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 将此处的版本号改为实际版本号
# 省略其他内容
}树莓派硬件资源问题
问题描述:树莓派的算力有限,内存可能出现不足的情况。
使用命令查看内存使用情况:
free -h解决方法:使用更新版本的树莓派或者添加swap。
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile端口冲突问题
问题描述:nginx使用的端口被其他服务占用,可以使用sudo netstat -tulnp命令查看。
解决方法:修改nginx或其他服务端口即可。
防火墙问题
问题描述:安装的防火墙服务可能阻止nginx的端口被使用。
解决方法:修改防火墙安全规则,放行相关端口。
上游服务器问题
问题描述:上游服务未运行或崩溃后未启动。
解决方法:
先检查服务状态,此处以php-fpm为例:
sudo systemctl status php-fpm我的树莓派就是在此处出现了问题,在我输入完此命令后回显:Unit php-fpm.service could not be found.,说明php-fpm服务没安装或者出现了什么未知的错误导致原有的php-fpm服务失效了。
如果没有回显Unit php-fpm.service could not be found.,则应该尝试重启服务:
sudo systemctl restart php-fpm像我的树莓派这样回显Unit php-fpm.service could not be found.应该先尝试一下安装php-fpm。在网上其他人的方案中,他们按照php版本进行了区分:
# PHP 7.x:
sudo apt-get install php-fpm
# PHP 8.x:
sudo apt-get install php8.0-fpm # 或 php8.1-fpm、php8.2-fpm 等但是实测无需按照php进行区分,apt会按照已安装的php版本进行自动选择,除非你的树莓派中安装了多个版本的php。使用如下命令即可:
sudo apt-get install php-fpm安装前可以先使用sudo apt-get update更新一下软件包源。
安装后可以验证一下是否安装成功:
sudo systemctl status phpx.x-fpm # 应使用实际安装版本替换x.x验证完毕后就可以启动和启用php-fpm了:
# 启动服务
sudo systemctl start phpx.x-fpm
# 设置开机自启动
sudo systemctl enable phpx.x-fpm启用完毕后,我们要检查一下nginx的服务器配置文件,确保指向正确的套接字,检查及修改方法如Nginx配置问题的解决方案,具体可以向上翻一下。
Nginx具有多个配置文件,这些配置文件的位置分别是:
- 主配置文件:
/etc/nginx/nginx.conf - 可用站点配置文件:
/etc/nginx/sites-available/ - 已启用站点配置文件:
/etc/nginx/sites-enabled/
此处修改的配置文件应该为可用站点配置文件,默认的位置为:/etc/nginx/sites-available/default。如果创建了独立站点,后面的default就要修改为独立站点的名称。
另外,如果使用TCP端口,即非Unix套接字,则要注释掉配置文件中的fastcgi_pass unix:/run/php/phpx.x-fpm.sock;,将下方的fastcgi_pass 127.0.0.1:9000;取消掉注释,如果下方没有该行注释,则手动写一下即可。
当配置文件更新后,需要重启Nginx服务,使用如下命令:
sudo systemctl restart nginx至此,Nginx出现502报错的问题已经被解决了,如果仍有问题,可以检查上游服务的配置或者查看Nginx日志来进行排查。不过,上述解决方案已经可以涵盖大多数情况。
相关推荐
- 树莓派低成本温控风扇方案 2025-04-30
评论0
暂时没有评论