博客地址

完整报错信息:nginx: [emerg] open() “/etc/nginx/mime.types” failed (2: No such file or directory) in /etc/nginx/nginx.conf:17

问题分析:根据该报错信息可知,是nginx配置中的mime.types文件找不到了

如图在nginx配置文件中使用include导入了mime.types文件,但是现在报错找不到该文件。
第一个解决方法就是删除或注释该行,亲测删除或注释后nginx可正常启动。
启动之后使用如下命令进入容器内部,在/etc/nginx目录下发现mime.types文件是存在的

那么为什么会报错找不到该文件呢???

思考之后发现:本人是使用docker部署nginx并配置ssl证书,因此在宿主机创建了cert目录将证书放到里面,然后启动是挂载该目录

-v /home/cert:/etc/nginx

因此这样子挂载之后,nginx启动是加载mime.types时就会到宿主机的/home/cert文件下面找mime.types,而该目录下没有,因此报错。

为了验证上述猜想:本人在宿主机cert文件中将mime.types文件添加进去,然后使用之前的启动命令,同样将-v /home/cert:/etc/nginx进行挂载,这次就可以正常运行了。

因此导致上述问题发生的原因,就是因为在启动时挂载目录方法不对导致,原本nginx容器中是存在该文件的,但是因为我们将容器中nginx目录和宿主机目录挂载,这时nginx就会到宿主机中寻找该文件。
为了避免上述问题,我们在挂载目录时为了不影响其他文件访问,可以将宿主机目录挂载到容器中新创建的目录中。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐