

# Código de status HTTP 502 (Gateway inválido)
<a name="http-502-bad-gateway"></a>

O CloudFront exibe um código de status HTTP “502 (Gateway inválido)” quando ele não consegue fornecer o objeto solicitado devido à impossibilidade de se conectar ao servidor de origem. 

Se você estiver usando o Lambda@Edge, o problema pode ser um erro de validação do Lambda. Se você receber um erro HTTP 502 com o código de erro `NonS3OriginDnsError`, provavelmente há um problema de configuração de DNS que impede o CloudFront de se conectar à origem.

**Topics**
+ [Falha de negociação SSL/TLS entre o CloudFront e um servidor de origem personalizado](#ssl-negotitation-failure)
+ [A origem não está respondendo com criptografias/protocolos compatíveis](#origin-not-responding-with-supported-ciphers-protocols)
+ [O certificado SSL/TLS da origem expirou, é inválido ou autoassinado, ou a cadeia de certificados está no pedido errado](#ssl-certificate-expired)
+ [A origem não está respondendo nas portas especificadas nas configurações](#origin-not-responding-on-specified-ports)
+ [Erro de validação do Lambda](#http-502-lambda-validation-error)
+ [Erro de validação da função do CloudFront](#http-502-cloudfront-function-validation-error)
+ [Erro de DNS (`NonS3OriginDnsError`)](#http-502-dns-error)
+ [Erro 502 de origem do Application Load Balancer](#cloudfront-alb-502-error)
+ [Erro 502 de origem do API Gateway](#cloudfront-api-gateway-502-error)

## Falha de negociação SSL/TLS entre o CloudFront e um servidor de origem personalizado
<a name="ssl-negotitation-failure"></a>

Se você usar uma origem personalizada que exija HTTPS entre o CloudFront e a origem, nomes de domínio não correspondentes poderão causar erros. O certificado SSL/TLS em sua origem *deve* incluir um nome de domínio que corresponda ao **domínio de origem** que você especificou para a distribuição do CloudFront ou ao cabeçalho `Host` da solicitação de origem.

Se os nomes de domínio não coincidirem, o handshake SSL/TLS falhará e o CloudFront retornará um código de status HTTP 502 (gateway inválido) e definirá o cabeçalho `X-Cache` como `Error from cloudfront`.

Para determinar se os nomes de domínio no certificado correspondem ao **Domínio de origem** da distribuição ou ao cabeçalho `Host`, você pode usar um verificador SSL on-line ou o OpenSSL. Se os nomes de domínio não forem correspondentes, você tem duas opções:
+ Obtenha um novo certificado SSL/TLS que inclua os nomes de domínio aplicáveis. 

  Se você usar o AWS Certificate Manager (ACM), consulte [Solicitar um certificado](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html) no *Guia do usuário do AWS Certificate Manager* para solicitar um novo certificado.
+ Altere a configuração da distribuição para que o CloudFront não tente mais usar SSL para conectar-se à origem.

### Verificador SSL online
<a name="troubleshooting-ssl-negotiation-failure-online-ssl-checker"></a>

Para encontrar uma ferramenta de teste de SSL, pesquise na Internet por "verificador ssl online". Normalmente, você especifica o nome do seu domínio, e a ferramenta retorna uma variedade de informações sobre seu certificado SSL/TLS. Confirme se o certificado contém seu nome de domínio nos campos **Nome comum** ou **Nomes alternativos da entidade**.

### OpenSSL
<a name="troubleshooting-ssl-negotiation-failure-openssl"></a>

Para ajudar a solucionar problemas de erros HTTP 502 no CloudFront, você pode usar o OpenSSL para tentar fazer uma conexão SSL/TLS com o servidor de origem. Se o OpenSSL não for capaz de fazer uma conexão, isso pode indicar um problema com a configuração de SSL/TLS do servidor de origem. Se o OpenSSL for capaz de fazer uma conexão, ele retornará informações sobre o certificado do servidor de origem, incluindo o nome comum (campo `Subject CN`) e o nome alternativo da entidade (campo `Subject Alternative Name`) do certificado.

Use o seguinte comando OpenSSL para testar a conexão com o servidor de origem (substitua o *domínio de origem* pelo nome de domínio do servidor de origem, como exemplo.com):

`openssl s_client -connect origin domain name:443`

Se o seguinte for verdadeiro:
+ Seu servidor de origem oferece suporte a vários nomes de domínio com vários certificados SSL/TLS
+ Sua distribuição está configurada para encaminhar o cabeçalho `Host` para a origem

Depois adicione a opção `-servername` ao comando do OpenSSL, como no exemplo a seguir (substitua *CNAME* pelo CNAME configurado em sua distribuição):

`openssl s_client -connect origin domain name:443 -servername CNAME`

## A origem não está respondendo com criptografias/protocolos compatíveis
<a name="origin-not-responding-with-supported-ciphers-protocols"></a>

O CloudFront se conecta a servidores de origem usando criptografias e protocolos. Para obter uma lista de criptografias e protocolos compatíveis com o CloudFront, consulte [Protocolos e criptografias compatíveis entre o CloudFront e a origem](secure-connections-supported-ciphers-cloudfront-to-origin.md). Caso a origem não responda com uma dessas criptografias ou protocolos na troca de SSL/TLS, ocorrerá uma falha na conexão do CloudFront. Você pode validar se a sua origem é compatível com as criptografias e os protocolos usando uma ferramenta online, como o [SSL Labs](https://www.ssllabs.com/ssltest). Digite o nome de domínio da sua origem no campo **Hostname** e, em seguida, escolha **Submit**. Analise os campos **Common names** e **Alternative names** do teste para ver se eles são correspondentes com o nome de domínio da sua origem. Após a conclusão do teste, encontre as seções **Protocols** e **Cipher Suites** nos resultados do teste para ver quais criptografias ou protocolos são compatíveis com sua origem. Compare o conteúdo com a lista de [Protocolos e criptografias compatíveis entre o CloudFront e a origem](secure-connections-supported-ciphers-cloudfront-to-origin.md).

## O certificado SSL/TLS da origem expirou, é inválido ou autoassinado, ou a cadeia de certificados está no pedido errado
<a name="ssl-certificate-expired"></a>

Se o servidor de origem retornar o seguinte, o CloudFront interromperá a conexão TCP, retornará o código de status HTTP 502 (gateway inválido) e definirá o cabeçalho `X-Cache` como `Error from cloudfront`:
+ Um certificado expirado
+ Certificado inválido
+ Certificado autoassinado
+ Cadeia de certificados na ordem errada

**nota**  
Se toda a cadeia de certificados, inclusive o certificado intermediário, não estiver presente, o CloudFront interromperá a conexão TCP.

Para obter informações sobre como instalar um certificado SSL/TLS no seu servidor de origem personalizado, consulte [Exigir HTTPS na comunicação entre o CloudFront e a origem personalizada](using-https-cloudfront-to-custom-origin.md).

## A origem não está respondendo nas portas especificadas nas configurações
<a name="origin-not-responding-on-specified-ports"></a>

Ao criar uma origem na distribuição do CloudFront, defina as portas de conexão do CloudFront com a origem para tráfego HTTP e HTTPS. Por padrão, são elas: TCP 80/443. Você tem a opção de modificar essas portas. Caso a origem esteja rejeitando o tráfego nessas portas por algum motivo ou o servidor de backend não esteja respondendo nas portas, ocorrerá uma falha na conexão do CloudFront.

Para solucionar esses problemas, marque todos os firewalls em execução na sua infraestrutura e valide se eles não são bloqueando os intervalos de IP compatíveis. Consulte mais informações em [Intervalos de endereços IP da AWS](https://docs.aws.amazon.com/vpc/latest/userguide/aws-ip-ranges.html) no *Guia do usuário da Amazon VPC*. Além disso, verifique se o seu servidor da web está em execução na origem.

## Erro de validação do Lambda
<a name="http-502-lambda-validation-error"></a>

Se você estiver usando o Lambda@Edge, um código de status HTTP 502 poderá indicar que a resposta da função do Lambda foi formada incorretamente ou incluía conteúdo inválido. Para obter mais informações sobre a resolução de erros do Lambda@Edge, consulte [Testar e depurar as funções do Lambda@Edge](lambda-edge-testing-debugging.md).

## Erro de validação da função do CloudFront
<a name="http-502-cloudfront-function-validation-error"></a>

Se você estiver usando funções do CloudFront, um código de status HTTP 502 poderá indicar que a função do CloudFront está tentando adicionar, excluir ou alterar um cabeçalho somente para leitura. Esse erro não é exibido durante o teste, mas aparecerá depois que você implantar a função e executar a solicitação. Para solucionar esse erro, verifique e atualize a função do CloudFront. Para obter mais informações, consulte [Atualizar funções](update-function.md).

## Erro de DNS (`NonS3OriginDnsError`)
<a name="http-502-dns-error"></a>

Um erro HTTP 502 com o código de erro `NonS3OriginDnsError` indica que há um problema de configuração de DNS que impede o CloudFront de se conectar à origem. Se você receber esse erro do CloudFront, verifique se a configuração de DNS da origem está correta e funcionando.

Ao receber uma solicitação de um objeto expirado ou não armazenado no cache, o CloudFront faz uma solicitação para a origem obter o objeto. Para fazer uma solicitação bem-sucedida para a origem, o CloudFront executa uma resolução de DNS no domínio da origem. Se o serviço DNS do domínio estiver com problemas, o CloudFront não poderá resolver o nome de domínio para obter o endereço IP, o que resultará em um erro HTTP 502 (`NonS3OriginDnsError`). Para corrigir esse problema, entre em contato com o seu provedor de DNS ou, se estiver utilizando o Amazon Route 53, consulte [Why can't I access my website that uses Route 53 DNS services?](https://aws.amazon.com/premiumsupport/knowledge-center/route-53-dns-website-unreachable/) (Por que não consigo acessar meu site que usa os serviços de DNS do Route 53?)

Para resolver ainda mais esse problema, certifique-se de que os [servidores de nome autoritativos](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/route-53-concepts.html#route-53-concepts-authoritative-name-server) do domínio raiz da origem ou do apex de zona (como `example.com`) estejam funcionando corretamente. Você pode usar os seguintes comandos para encontrar os servidores de nome da origem do apex com uma ferramenta como [dig](https://en.wikipedia.org/wiki/Dig_(command)) ou [nslookup](https://en.wikipedia.org/wiki/Nslookup):

```
dig OriginAPEXDomainName NS +short
```

```
nslookup -query=NS OriginAPEXDomainName
```

Quando você tiver os nomes dos seus servidores de nome, use os seguintes comandos para consultar o nome de domínio da sua origem neles e garantir que cada um responda com uma resposta:

```
dig OriginDomainName @NameServer
```

```
nslookup OriginDomainName NameServer
```

**Importante**  
Executa essa resolução de problemas de DNS usando um computador conectado à Internet pública. Como o CloudFront resolve o domínio de origem usando DNS público na internet, é importante solucionar problemas em um contexto semelhante.

Se a origem for um subdomínio cuja autoridade DNS está delegada a um servidor de nomes diferente do domínio raiz, verifique se os registros do servidor de nomes (`NS`) e início de autoridade (`SOA`) estão configurados corretamente para o subdomínio. É possível verificar esses registros usando comandos semelhantes aos exemplos anteriores.

Para obter mais informações sobre DNS, consulte [Conceitos de Domain Name System (DNS)](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/route-53-concepts.html#route-53-concepts-domain-name-system-dns) na documentação do Amazon Route 53.

## Erro 502 de origem do Application Load Balancer
<a name="cloudfront-alb-502-error"></a>

Se você usa o Application Load Balancer como origem e recebe um erro 502, consulte [Como soluciono os erros HTTP 502 do Application Load Balancer?](https://repost.aws/knowledge-center/elb-alb-troubleshoot-502-errors).

## Erro 502 de origem do API Gateway
<a name="cloudfront-api-gateway-502-error"></a>

Se você usa o API Gateway e recebe um erro 502, consulte [Como faço para resolver erros HTTP 502 das APIs REST do API Gateway com integração de proxy do Lambda?](https://repost.aws/knowledge-center/malformed-502-api-gateway).