Re: Как использовать Nginx в качестве прокси для S3 совместимого хранилища?

Alexandr Porunov alexandr.porunov на gmail.com
Ср Дек 14 13:28:41 UTC 2016


Я же написал что клиент поддерживает только 4 версию. Я не использую клиент
на c#.
Если написать развёрнуто, то вот что я использую:
Я использую SaltStack.
SaltStack нуждается в хранилище (он поддерживает разные хранилища:
локальная папка, git, s3, azure...).
Лично мне удобно использовать s3 (локальная папка в моём случае не
приемлема).
Так вот, для того чтобы работать с s3 у них есть специальный модуль s3fs
который умеет использовать s3 обьектное хранилище. Этот модуль написан на
Python и этот модуль умеет работать только с 4 версией подписи. Там просто
не написана логика работы для 2 версии.
Я не могу перевести клиента на вторую версию по двум причинам:
1. Нужно переписывать чужой модуль
2. Я никогда не работал с Python

Нужно понимать что я не использую s3.amazon.com. У меня своё приватное
хранилище которые никоем образом не относиться к амазону. Просто что у
этого хранилища точно такое-же API как и у Амазона.

Единственное решение это настроить Nginx чтобы он правильно проксировал
запросы к моему хранилищу.

2016-12-14 14:53 GMT+02:00 Илья Шипицин <chipitsine на gmail.com>:

>
>
> 14 декабря 2016 г., 17:41 пользователь Alexandr Porunov <
> alexandr.porunov на gmail.com> написал:
>
>> Всем привет,
>>
>> Я хочу использовать Nginx в качестве прокси для S3 совместимого хранилища
>> с 4 версией подписи (Amazon s3 signature version 4).
>>
>> Я новичёк в Nginx, но попробую обьяснить что я хочу сделать.
>>
>> У меня есть 3 сервера:
>>
>> mydomain.com - публичный сервер с запущенным Nginx
>> s3storage - приватный сервер с хранилищем с S3 API
>> client - клиент который хочет использовать S3 хранилище через Nginx (т.е.
>> через домен mydomain.com). Этот клиент умеет работать только с 4 версией
>> S3 подписи.
>>
>> Таким образом клиент отправляет примерно такие запросы к Nginx:
>>  https://<bucket>.mydomain.com/<my_files>
>>
>> где <bucket> - имя бакета и <my_files> - имя файла (если есть).
>>
>> Я должен иметь возможность как-то правильно проксировать эти запросы с
>> mydomain.com к s3storage (у s3storage IP 192.168.0.45).
>>
>> Проблема в том что имя бакета находиться в URL, а не в пути. Не понятно
>> как правильно проксировать такие запросы чтобы подпись оставалась целой и
>> чтобы можно было получать файлы с s3storage.
>>
>
> каким образом использовать бакет, в днс или в пути - это на усмотрение
> клиента, допустимы оба варианта
>
> http://stackoverflow.com/questions/16938683/
>
>
> (пример для клиента на c#)
>
>     AmazonS3Config S3Config = new AmazonS3Config()
>     {
>         ServiceURL = "s3.amazonaws.com",
>         ForcePathStyle = true,
>         RegionEndpoint = region
>     };
>
> более предсказуемая схема - перевести клиента и сервер на единообразный механизм. иначе подпись будет биться
> (и не совсем понятно, почему это надо чинить на nginx в транзите)
>
>
>
>
>
>>
>> Если кто-то знает как правильно настроить Nginx, то подскажите, пожалуйста
>>
>> С уважением,
>> Александр
>>
>> _______________________________________________
>> nginx-ru mailing list
>> nginx-ru на nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>
>
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru на nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20161214/77850c13/attachment-0001.html>


Подробная информация о списке рассылки nginx-ru