nginx 错误调试一则例子
nginx的日志,有主进程日志和子进程日志之分。主进程就是nginx进程,子进程就是这些worker进程。要调试错误,最好把子进程日志打开。
今天部署fastdfs的时候,能上传图片,访问图片报http 400错误。http400错误就是服务器进程有问题。
由于没有打开子进程日志,访问curl -v 之后程序hang住。没有听错,程序hang住了。
什么问题呢?这个时候把子进程日志打开:
vim nginx_fastdfs_storage.conf
server {
listen 8888;
server_name localhost;
access_log logs/access.log main; ##打开日志
location ~* /(?:app|accsett)/M00/(.+)?__width_([0-9]+)?__height_([0-9]+)?__networkType_(.+)?\.(jpg|jpeg|gif|png|webp) {
省略。。。。
}
location ~/(app|accsett)/M00 {
ngx_fastdfs_module;
}
error_page 500 502 503 www.pizei.com504 /50x.html;
location = /50x.html {
root html;
}
}
然后再次访问curl -v ,发现还是hang住,子进程不见了。同时页游后台报错:
2021/05/20 17:47:34 [notice] 22623#0: signal process started
ngx_http_fastdfs_process_init pid=22647
[2021-05-20 17:47:45] ERROR - file: ../common/fdfs_http_shared.c, line: 153, param "http.mime_types_filename" not exist or is empty
2021/05/20 17:47:45 [alert] 22646#0: worker process 22647 exited with fatal code 2 and cannot be respawned
work process 进程崩溃了,导致hang住,有错误。既然有错误日志,就好办了,百度搜索解决了。主要展示是nginx的调试过程