使用 Virtual Box + Docker + Nginx 来共享文件夹并进行文件传输的方法
背景
在Windows上通过Virtual Box搭建了Ubuntu Server 16.04,并使用Docker-compose运行了Nginx容器。在Ubuntu上,可以通过volumes与容器共享创建的文件进行分发,这没有任何问题。然而,当尝试使用共享文件夹与Windows共享文件进行分发时,却遇到了403 Forbidden无法分发的问题。
查看Nginx日志后发现,由于权限被拒绝,无法读取文件。进入Nginx容器内部检查权限时,发现权限为-rwxrwx—,即只有root和group具有权限,而其他用户则没有权限。
请问有什么问题吗?
虽然在Virtual Box的共享文件夹中共享的文件通过docker-compose的volume与Nginx容器进行共享,但是由于权限被拒绝,Nginx无法访问该文件。
如果将/media/sf_shared设置为Windows和Ubuntu的共享文件夹, 可以这样 paraphrase 原句子:
如果将/media/sf_shared设置为Windows和Ubuntu之间共享的文件夹,会怎么样呢?
version: '2'
services:
nginx:
image: nginx
ports:
- "80:80"
volumes:
- /media/sf_shared:/usr/share/nginx/html
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
处理方法 (duì chǔ fǎ)
在Nginx的官方映像中,nginx.conf中的”user”设置为nginx,将其改为root后,Nginx将以root权限运行工作进程,从而能够传送文件。
user root; # デフォルトはnginx
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
编者的话
根据用户从图像文件存储库中选择的内容,我想尝试将其作为静态文件发送而不是在AP服务器上转换为base64。我尝试了除了将Nginx用户设置为root之外的其他方法,但目前还没找到有效的方法。如果您了解,请告诉我。