可能是因为没有重启nginx容器
可以执行
重启nginx试试
引入了其他的配置文件
本人安装的是docker默认的nginx,自带了一个default.conf的配置文件,并且在nginx.conf中还引入了这个文件,后面我还对nginx.conf添加了一个server并且端口号都是80,在打印docker logs nginx时发现警告(80端口冲突:nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored)
可以把引入文件哪一行注释起来(下面那一行,前面加个#就可以注释)
include /etc/nginx/conf.d/*.conf;
再尝试重新启动
目录结构错误
由于docker安装镜像是单独的文件系统,即使你挂载了数据卷(数据卷只是同步数据的作用),路径也是相对于docker那个文件系统的,我把一个html目录放到了/路径下,并且nginx.conf中的location是这样写的
location / {
root /www/www;
index index.html index.htm;
}
这样就导致nginx不能在自己的目录下找到对应的路径(因为我这个路径是基于Liunx的嘛)
可以将自己的html目录放到数据卷的html目录下
mv 外部的html路径 数据卷挂载的html路径
# 例如我就是执行了下面的指令
# mv /www /root/nginx/html
然后再将nginx.conf的location改成这样
location / {
root /usr/share/nginx/html/www/www;
index index.html index.htm;
}
/usr/share/nginx/html是docker中nginx的目录,这个目录可以执行
docker exec -it nginx容器名 bash
find -name html
找到
使用了其他端口
因为执行docker run 指令时-p只映射了80:80端口,所以其他端口无法访问到,docker似乎不能后添加端口映射,只能删除容器后(需要先停止容器)重新docker run创建容器,再创建容器的时候多指定一个-p参数(不会安装的可以看这个Docker安装Nginx)