Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Dúvida] The request was blocked because it resolves to a restricted IP address

Fala, professor(a), beleza. Estou usando o json-server para ter acesso ao json que criei, para simular o json que o professor está usando na aula, mas estou com erro ao tentar executar o step com a URL usando, tanto o IP da minha máquina, ou usando o localhost (usei essa URL só para ver qual erro aparecia, e aparece o mesmo erro): The target {meu ip} is not allowed. This is a security measure to prevent Server-Side Request Forgery (SSRF). If you need to access internal resources, ask your n8n administrator to allowlist the hostname or IP range in the environment configuration.

1 resposta

Oi, Pedro.

Isso acontece com frequência quando tentamos conectar ferramentas de automação rodando localmente (ou em containers) com os nossos servidores locais de teste, como o json-server.

O erro que você tá enfrentando é uma proteção nativa do n8n chamada SSRF (Server-Side Request Forgery). Por padrão, para evitar brechas de segurança, o n8n bloqueia requisições HTTP direcionadas para o próprio ambiente local (localhost, 127.0.0.1 ou o IP da sua rede interna).

Pra resolver esse comportamento e fazer o n8n conversar com o seu json-server, existem caminhos diferentes dependendo de como você está executando o n8n.

Como solucionar o erro de SSRF no n8n

Cenário 1: Se você está rodando o n8n via Docker (mais comum)

Quando o n8n está dentro de um container Docker, a palavra localhost se refere ao próprio container do n8n, e não à sua máquina onde o json-server está rodando.

  1. Substitua a URL no n8n: Em vez de usar http://localhost:3000 ou o seu IP local no nó de requisição HTTP, utilize o endereço especial do Docker:
  • No Windows ou Mac: http://host.docker.internal:3000
  • No Linux: Pode ser necessário adicionar a flag --add-host=host.docker.internal:host-gateway no comando de inicialização do Docker para que essa mesma URL funcione.

Cenário 2: Se você precisa liberar os IPs locais (Variáveis de ambiente)

Se a estratégia anterior não se aplicar ou se você estiver usando o n8n instalado globalmente via npm (ou desktop), será preciso dizer explicitamente ao n8n que ele pode confiar na sua rede local. Isso é feito alterando as variáveis de ambiente do sistema antes de iniciar o n8n.

Você deve definir a variável N8N_ENFORCE_SETTINGS_FILE_FOR_HOSTS ou desabilitar o bloqueio de IPs locais com as seguintes propriedades:

  • No terminal (Linux/Mac):
export N8N_BLOCK_ENV_ACCESS_IN_NODE=false
export N8N_ENFORCE_SETTINGS_FILE_FOR_HOSTS=false
n8n start
  • No PowerShell (Windows):
$env:N8N_BLOCK_ENV_ACCESS_IN_NODE="false"
$env:N8N_ENFORCE_SETTINGS_FILE_FOR_HOSTS="false"
n8n start

Se você utiliza o Docker Compose, basta adicionar essas configurações na seção environment do seu arquivo docker-compose.yml:

environment:
  - N8N_ENFORCE_SETTINGS_FILE_FOR_HOSTS=false

Cenário 3: Uma alternativa rápida com Ngrok

Caso não queira mexer nas configurações de rede do n8n ou do Docker agora, uma saída prática para ambiente de desenvolvimento é expor o seu json-server temporariamente para a internet usando o Ngrok.

  1. Com o json-server rodando na porta 3000, abra seu terminal e execute:
ngrok http 3000
  1. O Ngrok vai gerar uma URL pública segura (ex: https://subdominio.ngrok-free.app).
  2. Use essa nova URL gerada dentro do nó HTTP do n8n. Como se trata de um endereço externo público, o n8n não aplicará o bloqueio de segurança local.

Espero ter ajudado.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!