通过nginx

时间:2019-07-11 21:16:32

标签: nginx amazon-s3 s3fs

我正在使用命令

将S3存储桶安装到Ubuntu VM

s3fs my-bucket /mnt/s3-bucket -o use_rrs -o allow_other -o use_cache=/tmp

此卷已正确安装到VM。也能够将文件从/mnt/s3-bucket/*复制到任何其他位置。

我正尝试通过Nginx在此位置提供服务以下载这些文件。

但是当我单击文件名时,我得到403 Forbidden

nginx.conf:

server {
    listen         8080 default_server;
    server_name    localhost;
    keepalive_timeout 70;
    gzip on;
    gzip_disable "msie6";
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_types text/plain text/css application/json application/x-javascript application/javascript text/xml application/xml application/xml+rss text/javascript;

    location / {
        root /mnt/s3-bucket;
        autoindex on;
    }
}

目录权限:

root@factory:~# ls -alh /mnt/s3-bucket
total 56K
drwxrwxrwx 1 ubuntu ubuntu    0 Jan  1  1970 .
drwxr-xr-x 3 root   root   4.0K Jul 19 20:30 ..
-rw-r----- 1 ubuntu ubuntu  50K Jul 19 18:19 controller_1.34.0.tar
drwxr-x--- 1 ubuntu ubuntu    0 Jul 19 18:28 firmware
root@factory:~#

试图更改文件权限

root@factory:~# chown -R root:root /mnt/s3-bucket
chown: changing ownership of '/mnt/s3-bucket': Input/output error
root@factory:~#

我缺少什么?我如何通过Nginx服务器下载可下载的S3文件

1 个答案:

答案 0 :(得分:1)

S3存储桶中的文件归ubuntu:ubuntu所有,因为S3存储桶已使用参数-o uid=1000 -o gid=1000进行了mountet。这些是用户 ubuntu 和组 ubuntu 的ID。

处理http请求的nginx工作进程以其他用户身份运行。通常是 www-data

如果要启用Nginx来访问S3存储桶中的文件,则必须将 uid gid 替换为 www-data < / strong>。

id -u www-data显示 uid ,而id -g www-data显示 gid