Login
Login

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