недавно траблшутили аналогичную проблему. AWS4 работает на механизме подписи хедеров запроса.
клиент перечисляет хедеры в SignedHeaders=content-type;date;expect;host;x-amz-content-sha256;x-amz-date а сервер проверяет подпись соответственно, если клиент добавляет "expect" (у нас - добавляет), то подпись бьется. нет планов реализовать поддержку Expect ? 14 декабря 2016 г., 18:28 пользователь Alexandr Porunov < alexandr.poru...@gmail.com> написал: > Я же написал что клиент поддерживает только 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 Илья Шипицин <chipits...@gmail.com>: > >> >> >> 14 декабря 2016 г., 17:41 пользователь Alexandr Porunov < >> alexandr.poru...@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 >> > > > _______________________________________________ > 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