比如静态资源图片位于/mnt/software/nginx/html/static/images目录下,那么nginx.conf中的配置则为:
# 静态文件目录 location /static/images/ { root /mnt/software/nginx/html; try_files $uri $uri/ =404; #找不到时提示404 }
当前端发起的请求地址中带有 /static/images/时,则到 /mnt/software/nginx/html目录下的子目录/static/images/进行查找,图片存储的绝对地址为:/mnt/software/nginx/html/static/images/文件名称。nginx会将它们组合起来,location部分配置的请求路径的地址,root配置的该地址在服务器哪个根目录下。
如果nginx使用的是docker运行,那么root中配置的地址必须是docker容器中nginx静态资源地址,而不是挂载的宿主机的地址。docker启动命令最好包含挂载地址。像下面的启动命令:
docker run -p 80:80 -p 443:443 --name nginx \ -v /mnt/software/nginx/html:/usr/share/nginx/html \ -v /mnt/software/nginx/logs:/var/log/nginx \ -v /mnt/software/nginx/conf:/etc/nginx \ -v /opt/files/imfilepath:/opt/files/imfilepath \ -d nginx:1.10
上面的启动命令中,将80和443端口映射到主机,如果未映射443端口会导致https无法访问,
然后分别将nginx里面的html挂载到宿主机指定目录,用于存放前端项目如vue的dist,还有静态资源,logs挂载到宿主机上方便查看nginx日志,还有配置文件,最后一个/opt/files/imfilepath用于上传文件也挂载到宿主机上。
可以在宿主机目录 /mydata/nginx/html目录下新建static文件夹存放静态资源如images,css,js。由于 /mydata/nginx/html对应docker里边nginx的/usr/share/nginx/html目录,会将资源同步到容器里边,此时nginx.conf配置静态资源访问时,只需添加如下代码:
# 静态文件目录 location /static/images/ { root /usr/share/nginx/html; try_files $uri $uri/ =404; #找不到时提示404 }
而不是下面的配置:
# 静态文件目录 location /static/images/ { root /mydata/nginx/html; try_files $uri $uri/ =404; #找不到时提示404 }
location中root
和 alias
的区别
root:使用 root 指令时,nginx会将其值与请求的 uri 拼接起来。例如,访问 /resource/image/test.png 时,nginx会将请求路径 /resource/image/ 和 root 中指定的路径 /mnt/files/imfilepath 拼接起来,形成 /mnt/files/imfilepath/resource/image/test.png。
alias:与 root 不同,alias 会把匹配的路径直接替换为指定的路径。适用于静态资源路径的映射。例如,访问 /resource/image/test.png 时,nginx会将请求路径 /resource/image/替换为 /mnt/files/imfilepath/resource/image/。
alias的配置:
location /resource/image/ { alias /mnt/files/imfilepath/resource/image/; try_files $uri $uri/ =404; }
到此这篇关于nginx配置静态资源的访问的实现的文章就介绍到这了,更多相关nginx 静态资源访问内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论