如何配置docker-compose.yml与Nginx配置文件实现外部磁盘路径映射
问题原因
你的docker-compose.yml挂载配置没有问题,报错是Nginx配置中location /downloads块错误使用了root指令导致的:
root指令的逻辑是将location匹配的路径完整追加到root值后面拼接为实际文件路径,你当前的配置下,访问example.com/downloads/test.zip时,Nginx会尝试读取容器内/storage/downloads/test.zip路径的文件,但你的文件是直接存放在/storage根目录下,自然返回404。
正确配置方案
把location /downloads块的root指令替换为alias指令即可,alias指令会直接用设置的路径替换location匹配的路径部分,不会追加拼接:
server { listen 80 default; server_name example.com; root /www; index index.php; location /downloads/ { alias /storage/; # 若需要允许列出目录内容,可添加以下两行 autoindex on; autoindex_exact_size off; } }
配置验证
修改配置后重载Nginx配置生效,你也可以先进入容器确认挂载路径是否正常:
# 替换为你的Nginx容器名称/ID docker exec -it <nginx容器标识> ls /storage
如果能正常列出你放在Azure外部磁盘里的文件,说明挂载逻辑完全正常。
内容的提问来源于stack exchange,提问作者Diego Luiz
相关产品推荐
相关产品推荐

