首先检查Nginx服务是否处于运行状态,这是最基础的排查动作。
命令:sudo systemctl status nginx
sudo systemctl start nginx(启动)、sudo systemctl restart nginx(重启)。Nginx的错误日志记录了详细的故障信息,是定位问题的关键。
日志路径:默认位于/var/log/nginx/error.log(可通过nginx -V命令确认自定义路径)。
查看方式:
sudo tail -f /var/log/nginx/error.log;sudo tail -n 10 /var/log/nginx/error.log。open() "/var/www/html/index.html" failed (2: No such file or directory):请求的文件不存在,需检查root指令配置的路径是否正确;[emerg] invalid parameter "listen" in /etc/nginx/sites-enabled/default:5:配置文件语法错误(如listen指令参数无效),需用nginx -t验证语法;upstream timed out (110: Connection timed out) while reading response header from upstream:上游服务(如PHP-FPM、Node.js)未响应,需检查后端服务状态。配置文件语法错误是Nginx无法启动或运行的常见原因。
命令:sudo nginx -t
/etc/nginx/nginx.conf或/etc/nginx/sites-available/default),修改后再次验证语法。Nginx默认监听80(HTTP)和443(HTTPS)端口,若端口被其他进程占用,会导致Nginx无法启动或无法访问。
命令:
sudo netstat -tulnp | grep 80 或 sudo lsof -i :80;sudo netstat -tulnp | grep 443 或 sudo lsof -i :443。sudo systemctl stop apache2)或修改Nginx的listen指令(如改为listen 8080),修改后重启Nginx。Nginx进程(通常为www-data用户)需要对网站文件及目录有读取权限,否则会出现403 Forbidden错误。
检查命令:ls -ld /var/www/html(查看网站根目录权限)。
修正权限:
www-data:sudo chown -R www-data:www-data /var/www/html;sudo chmod -R 755 /var/www/html(文件:sudo chmod -R 644 /var/www/html/*)。若网站依赖PHP、MySQL等后端服务,需确保这些服务正常运行。
检查命令:
sudo systemctl status php7.4-fpm(根据PHP版本调整,如php8.1-fpm);sudo systemctl status mysql 或 sudo systemctl status mariadb。sudo systemctl start php7.4-fpm或sudo systemctl start mysql启动服务。防火墙或SELinux可能阻止Nginx的网络访问,导致无法从外部访问网站。
Ubuntu防火墙(UFW)检查:
sudo ufw status;sudo ufw allow 80/tcp、sudo ufw allow 443/tcp。sudo setenforce 0(生产环境慎用,建议调整策略而非完全禁用)。系统资源耗尽可能导致Nginx响应缓慢或崩溃。
检查命令:
free -h(关注“Available”内存);df -h(关注“Use%”是否超过90%);top 或 htop(关注“%CPU”占用高的进程)。worker_processes数量)、增加服务器内存;若磁盘空间不足,清理无用文件(如日志、缓存)。sudo systemctl status php7.4-fpm),确认Nginx的fastcgi_pass指令指向正确的后端端口(如fastcgi_pass unix:/run/php/php7.4-fpm.sock;)。www-data)或index指令未配置。检查权限(chown)及Nginx配置中的index指令(如index index.html index.php)。root/alias指令配置错误。检查网站根目录是否存在对应文件,确认root指令路径是否正确(如root /var/www/html;)。通过以上结构化流程,可覆盖Ubuntu环境下Nginx故障的常见场景。若问题仍未解决,可结合错误日志中的具体信息(如模块名、错误代码)进一步深入排查,或参考Nginx官方文档获取针对性支持。