原因:服务器端脚本(如PHP)语法错误、文件权限不足、磁盘空间耗尽或Nginx配置错误。
解决方法:
sudo tail -n 50 /var/log/nginx/error.log
;sudo php -l /path/to/script.php
;sudo chown -R www-data:www-data /var/www/html
(确保Nginx用户有访问权限);df -h
查看磁盘使用情况,删除无用文件释放空间。原因:请求的URL路径错误、资源已被删除、Nginx配置中root
或alias
指令指向错误。
解决方法:
/etc/nginx/sites-available/default
)中的root
指令,确保指向正确的网站目录(如/var/www/html
);ls -l /var/www/html
。原因:目录权限不足、Nginx配置中未启用index
文件或autoindex
关闭。
解决方法:
sudo chmod -R 755 /var/www/html
(允许其他用户读取);index
指令:index index.html index.php
;autoindex on;
到location
块中。原因:Nginx作为反向代理时,后端服务(如PHP-FPM、Node.js)未运行或无法连接。
解决方法:
sudo systemctl status php-fpm
(以PHP-FPM为例);proxy_pass
或fastcgi_pass
指令正确(如fastcgi_pass unix:/run/php/php-fpm.sock;
);sudo systemctl restart php-fpm && sudo systemctl restart nginx
。原因:上传文件大小超过Nginx或PHP的限制。
解决方法:
nginx.conf
中增加client_max_body_size 10M;
(允许最大10MB上传);php.ini
中调整post_max_size = 10M
和upload_max_filesize = 10M
;sudo systemctl restart nginx php-fpm
。原因:后端服务器过载、维护或Nginx配置中limit_conn
/limit_req
限制触发。
解决方法:
top
或htop
查看CPU、内存使用情况;return 503;
并设置error_page
;limit_conn_zone
的大小或调整limit_req_zone
的速率。原因:后端服务器处理请求时间超过Nginx设置的超时时间。
解决方法:
location
块中增加proxy_read_timeout 90;
和proxy_send_timeout 90;
(将超时时间延长至90秒);sudo systemctl restart nginx
。原因:Nginx配置文件(如nginx.conf
或站点配置文件)存在语法错误。
解决方法:
sudo nginx -t
(若显示“syntax is ok”,则配置正确);sudo systemctl restart nginx
。原因:Nginx监听的端口(如80、443)已被其他服务(如Apache)占用。
解决方法:
sudo lsof -i :80
;sudo kill -9 [PID]
(替换为实际进程ID);/etc/apache2/ports.conf
中的Listen 80
改为Listen 8080
)。原因:所有错误都需要通过日志定位根本原因。
解决方法:
sudo tail -f /var/log/nginx/error.log
(实时跟踪最新错误);sudo tail -f /var/log/nginx/access.log
(了解请求详情);/var/log/php-fpm.log
)进一步分析。