一、问题背景:
Docker部署的应用需要上传文件,上传的静态文件需要通过nginx访问,出现nginx访问404问题!
二、解决方案:
1、docker部署应用时,将文件上传的目录挂载到宿主机的对应目录上。例如:应用上传到【/oss/home】中,将这个目录映射到主机的对应的【/oss/home】目录上,docker命令如下:
docker run -d -p 8082:8082 \
-v /oss/home/material:/oss/home/material \
--name myoss oss:v1
# 这里是将docker中的/oss/home/material的目录映射到/oss/home/material目录上
2、docker的nginx容器配置:
# 这里监听8084端口,并且静态资源根目录为/oss/home/
server{
listen 8084;
server_name localhost;
charset utf-8;
location /{
root /oss/home/;
}
location /oss {
alias /oss/home/material/;
}
}
3、将docker的nginx容器内部的静态资源目录映射到刚才容器应用映射到主机的文件目录,就是刚才的【/oss/home/】,docker命令如下:
#这里映射的nginx配置的根目录-> /oss/home:/oss/home
docker run -p 80:80 \
-p 8084:8084 --name mynginx \
-v /usr/local/docker/nginx/www:/www \
-v /usr/local/docker/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /usr/local/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/docker/nginx/logs:/var/log/nginx \
-v /oss/home:/oss/home \
-d nginx
4、监测端口是否开放,成功的话如下图,不成功的话就要去开启该端口允许外部访问。
来源:CSDN
作者:进修的CODER
链接:https://blog.csdn.net/lovequanquqn/article/details/88087735