Объем s3fs выставляется через nginx - PullRequest
3 голосов
/ 12 июля 2019

Я монтирую S3 bucket на Ubuntu VM с помощью команды

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

Этот том правильно подключен к ВМ. Также можно копировать файлы из /mnt/s3-bucket/* в любое другое место.

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

Пытался изменить права доступа к файлу

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:~#

Пытался создать файл с ВМ root @ factory: ~ # touch /mnt/s3-bucket/test.txt touch: установка времени для '/mnt/s3-bucket/test.txt': такого файла или каталога нет

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 /s3 {
        alias /mnt/s3-bucket;
        autoindex on;
    }
}

Журналы с Nginx:

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/"

Чего мне не хватает? Как я могу сервировать загружаемые файлы S3 через Nginx

1 Ответ

1 голос
/ 25 июля 2019

Файлы внутри корзины S3 принадлежат ubuntu:ubuntu, поскольку корзина S3 была смонтирована с параметрами -o uid=1000 -o gid=1000.Это идентификаторы для пользователя ubuntu и группы ubuntu .

Рабочий процесс nginx, который обрабатывает запросы http, запускается от имени другого пользователя.Обычно это www-data .

Если вы хотите разрешить nginx доступ к файлам внутри корзины S3, вам нужно заменить uid и gid с соответствующими значениями для www-data .

id -u www-data отображает uid и id -g www-data отображает gid

...