首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >s3fs体积通过nginx暴露

s3fs体积通过nginx暴露
EN

Stack Overflow用户
提问于 2019-07-11 21:16:32
回答 1查看 1.5K关注 0票数 3

我使用命令将S3桶安装到Ubuntu

root@factory:~# s3fs my-bucket /mnt/s3-bucket -o passwd_file=/etc/.passwd-s3fs -o noatime -o allow_other -o uid=1000 -o gid=1000 -o use_cache=/tmp -o default_acl=public-read-write

此卷被正确地挂载到VM。还可以将文件从/mnt/s3-bucket/*复制到任何其他位置。

代码语言:javascript
复制
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 22 15:04 controller_1.34.0.tar
drwxr-x--- 1 ubuntu ubuntu    0 Jul 22 15:04 firmware

不知道为什么这些文件是ubuntu:ubuntu拥有的

我正试图通过Nginx下载这些文件来提供这个位置。

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

试图更改文件权限

代码语言:javascript
复制
root@factory:~# chown -R root:root /mnt/s3-bucket
chown: changing ownership of '/mnt/s3-bucket/controller_1.34.0.tar': Input/output error
chown: changing ownership of '/mnt/s3-bucket/fixture_controller_2.1.3.tar': Input/output error
chown: changing ownership of '/mnt/s3-bucket': Input/output error
root@factory:~#

尝试从VM root@factory:~# touch /mnt/s3-bucket/test.txttouch创建文件:设置‘/mnt/s3-bucket/test.txt’的时间:没有这样的文件或目录

nginx.conf:

代码语言:javascript
复制
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 /s3 {
        alias /mnt/s3-bucket;
        autoindex on;
    }
}

来自Nginx的日志:

代码语言:javascript
复制
2019/07/24 13:45:10 [error] 10777#10777: *2 open() "/mnt/s3-bucket/fixture_controller_2.1.3.tar" failed (13: Permission denied), client: 13.12.18.18, server: localhost, request: "GET /s3/fixture_controller_2.1.3.tar HTTP/1.1", host: "43.3.7.96:8080", referrer: "http://43.3.7.96:8080/s3/"
2019/07/24 13:45:18 [error] 10777#10777: *2 open() "/mnt/s3-bucket/controller_1.34.0.tar" failed (13: Permission denied), client: 13.12.18.18, server: localhost, request: "GET /s3/controller_1.34.0.tar HTTP/1.1", host: "43.3.7.96:8080", referrer: "http://43.3.7.96:8080/s3/"

我错过了什么?如何通过Nginx服务器下载S3文件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-24 23:05:11

S3桶中的文件属于ubuntu:ubuntu,因为S3桶是带有params -o uid=1000 -o gid=1000的S3桶。这些是用户ubuntu和组ubuntu的ID。

处理http请求的nginx辅助进程作为另一个用户运行。通常是www-data

如果要使nginx能够访问S3桶中的文件,则必须将uidgid替换为www-data的相应值。

id -u www-data显示uidid -g www-data显示gid

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56997394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档