Я пытаюсь реализовать прокси NGINX перед Amazon S3. Аналогично реализации здесь:
https://blog.sentry.io/2017/03/01/dodging-s3-downtime-with-nginx-and-haproxy
Работает для клиента Python, но не для клиента AWS Java SDK:
https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk
Я сузил вопрос до заголовка авторизации. В версии 1.11.x aws - java -sdk заголовок Host
включен при вычислении подписи для заголовка Authorization
. Из-за этого клиент получает 403 ошибки через прокси, если я не обманул клиента, установив s3.amazon aws .com на NGINX IP прокси.
Это не проблема с 1.10. х, но наше приложение не будет работать с этой версией.
Кроме того, заголовок Host
не упоминается ни в одной документации для aws - java -sdk, и из того, что я прочитайте его должен использовать только заголовки amz-
, так что это должно работать, но мой клиент добавляет не amz-
заголовки в список SignedHeaders.
Так что вопрос ...
Могу ли я решить эту проблему на уровне Nginx? Существуют ли какие-либо опции клиента aws - java -sdk, которые помогут или позволят мне настроить используемые им заголовки?
1.11 Пример заголовка аутентификации:
Authorization: AWS4-HMAC-SHA256 Credential=AKIAXXXXXXXXXXXX/20200203/us-east-1/s3/aws4_request, SignedHeaders=amz-sdk-invocation-id;amz-sdk-retry;content-length;content-md5;content-type;host;user-agent;x-amz-content-sha256;x-amz-date;x-amz-decoded-content-length;x-amz-server-side-encryption, Signature=XXXXXXXXXXXXXX
1.10 Пример заголовка аутентификации:
Authorization: AWS AKIAXXXXXXXXXXXX