Configurar proxy do S3 via Nginx

Atualizado em 26 de February de 2026

Fazer proxy do S3 por meio do Nginx permite usar seu servidor como intermediário entre os clientes e o armazenamento S3, oferecendo vários benefícios. Você pode ocultar o acesso direto ao S3, controlar o cache para otimizar o tráfego, modificar cabeçalhos para lidar com requisições de forma mais flexível e restringir o acesso ao conteúdo. Além disso, um proxy ajuda a unificar o acesso a vários serviços sob um único domínio, reduzir custos de tráfego com cache local e habilitar registro detalhado de requisições para análise.

Instalar o Nginx

Primeiro, instale o Nginx caso ainda não o tenha:

sudo apt update
sudo apt install nginx

Verifique se o Nginx está em execução com o comando:

sudo systemctl status nginx

Se não estiver, inicie o serviço e habilite-o para iniciar junto com o sistema:

sudo systemctl start nginx
sudo systemctl enable nginx

Configurar acesso ao bucket

Para que o proxy funcione, seu bucket precisa ser público ou ter acesso configurado para o endereço IP do seu servidor.

Para permitir acesso ao bucket a partir do IP do seu servidor, defina uma política de bucket usando a AWS CLI. Primeiro, crie um arquivo chamado bucket-policy.json com o seguinte conteúdo:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::bucket_name/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": "server_IP_address"
        }
      }
    }
  ]
}

Especifique os parâmetros:

  • bucket_name: nome do seu bucket.
  • server_IP_address: endereço IP externo do seu servidor.

Aplique a política ao bucket:

aws s3api put-bucket-policy --bucket bucket_name --policy file://bucket-policy.json --endpoint-url https://s3.hmstorage.net

Se você precisar permitir vários endereços IP, adicione-os como um array no campo IpAddress:

"IpAddress": {
  "aws:SourceIp": ["IP_address_1", "IP_address_2"]
}

Agora, o bucket só poderá ser acessado a partir dos endereços IP especificados.

Configuração básica

Crie um arquivo de configuração para o proxy. Por exemplo, crie o arquivo s3_proxy.conf em /etc/nginx/sites-available:

sudo nano /etc/nginx/sites-available/s3_proxy.conf

Configure-o da seguinte forma:

server {
    listen 80;
    server_name your_domain;

    location / {
        proxy_pass https://s3.hmstorage.net/bucket_name/;
        proxy_set_header Host s3.hmstorage.net;
        proxy_ssl_server_name on;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Authorization "";
        proxy_hide_header x-amz-id-2;
        proxy_hide_header x-amz-request-id;
        proxy_hide_header Set-Cookie;
        add_header Cache-Control "public, max-age=3600";
        expires 1h;
    }
}

Salve o arquivo e crie um link simbólico em sites-enabled:

sudo ln -s /etc/nginx/sites-available/s3_proxy.conf /etc/nginx/sites-enabled/

Verifique se há erros na configuração:

sudo nginx -t

Se não houver erros, reinicie o Nginx:

sudo systemctl restart nginx

Agora, os arquivos do bucket estarão disponíveis em http://your_domain/file_name.

Configurar um certificado SSL para o proxy

Para aumentar a segurança, configure HTTPS usando o Certbot. Instale o Certbot e o plugin do Nginx:

sudo apt install certbot python3-certbot-nginx

Gere e instale o certificado SSL:

sudo certbot --nginx -d your_domain

O Certbot atualizará automaticamente a configuração do Nginx para HTTPS. Depois de concluído, o Certbot ativará o certificado e o proxy passará a funcionar por meio de uma conexão segura.

Esta página foi útil?
Atualizado em 26 de February de 2026

Tem perguntas,
comentários ou preocupações?

Nossos profissionais estão disponíveis para ajudá-lo a qualquer momento,
seja para assistência ou apenas se você não souber por onde começar.
Envie-nos um e-mail
Hostman's Support