docker 安装nginx后,配置访问本地静态资源

2,970 阅读2分钟

这里有个坑就是需要提前把目录挂载出去,不然访问一直都是404。。。。。。。

docker安装nginx可参考:docker安装nginx并使用自定义配置文件

今天有个需求,就是需要把上传的文件,弄个下载接口,倒腾了半天,使用接口下载时,浏览器下载的文件一直是response.bin 这问题,百度都没搜到,我也是服了,真不知道哪里配置错了。

神奇的是,这个response.bin 就是目标下载的文件,我把后缀改成原文件的后缀,发现就是那个文件。。。。。。。。

最后放弃了安全性,直接使用nginx配置静态资源文件,进行文件下载,这样做的弊端就是无法灵活控制安全性了,如果该链接泄露,则谁都可以访问该资源。

default.conf修改内容如下: image.png

由于我这里项目文件上传的路径为服务器的:/opt/upload 文件夹,所以url映射时,用的是这个绝对路径。

首先一点,需要保证存放静态资源的这个路径,在nginx镜像里面是确实存在的,并且映射到宿主机对应的文件夹上。

这里alias指定了别名,该别名映射到服务器的真实路径,这里不加双引号,刚开始我加了双引号,一直不好使。

还有就是如果nginx镜像已经运行了,镜像内部手动新建该文件夹,重启镜像也是不行的。需要在首次启动镜像时,对目录进行映射挂载。

所以这里启动nginx的镜像命令,就变成了:

  docker run --privileged=true \
  --restart=always \
  --name nginx \
  -d -p 80:80 \
  -v /usr/soft/nginx/html:/usr/share/nginx/html \
  -v /usr/soft/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
  -v /usr/soft/nginx/conf.d:/etc/nginx/conf.d \
  -v /opt/upload:/opt/upload \
  192.168.104.51:5000/huaun/nginx:test

其中

-v /opt/upload:/opt/upload 为映射宿主机的路径和nginx镜像内的路径,这里可自定义修改,但是有一点需要注意,如果使用了自定义的nginx的配置文件,配置文件里面对应的路径,需要是nginx镜像内部的文件路径。

192.168.104.51:5000/huaun/nginx:test 为我本地镜像仓库内的镜像,也就是在原生nginx镜像上面打了一个tag,改个名称而已,"192.168.104.51:5000/huaun/nginx:test"可直接替换成"nginx"

浏览器访问,正常显示应该是这样的:

image.png

然后访问:http://192.168.104.70/download/20210628114303069329.rar 就可以直接下载该文件了。