---
name: azion-redirecione-http-para-https
description: >-
  Redirecione para HTTPS cada requisição feita por HTTP com uma regra da Request Phase, em um workload com HTTPS ativado.
---

# Redirecione HTTP para HTTPS

Você redireciona para HTTPS cada requisição feita por HTTP com uma regra na aplicação, pelo Azion Console, pela API ou pela Azion CLI. Para o certificado de que o HTTPS no seu próprio domínio precisa, consulte [Solicite um certificado Let's Encrypt](/pt-br/documentacao/guias/seguranca-de-aplicacoes/tls-e-certificados/como-gerar-um-certificado-lets-encrypt/).

O behavior *Redirect HTTP to HTTPS* redireciona para HTTPS uma requisição feita por HTTP, e não faz nada com uma requisição já feita por HTTPS. A regra corresponde, portanto, a todos os caminhos, sem condição sobre o esquema. O behavior exige HTTPS ativado nas configurações de protocolo do workload que entrega a aplicação.

```mermaid
%%{init: {"layout": "dagre", "themeVariables": {"fontSize": "13px"}, "flowchart": {"nodeSpacing": 12, "rankSpacing": 12, "padding": 6, "wrappingWidth": 70, "minNodeWidth": 40, "useMaxWidth": true}}}%%
flowchart TD
  Req["Uma requisição chega à aplicação"] --> Rule["A regra corresponde a todos os caminhos"]
  Rule --> Scheme{"A requisição foi feita por HTTP?"}
  Scheme -->|"sim"| Redirect["O cliente é redirecionado para HTTPS"]
  Scheme -->|"não"| Continue["A requisição continua sem mudança"]
```

1. Toda requisição corresponde à regra, porque o seu critério é `${uri}` *starts with* `/`.
2. Uma requisição feita por HTTP é redirecionada para HTTPS.
3. Uma requisição feita por HTTPS segue para as regras seguintes, sem mudança.

---

## Pré-requisitos

- Uma aplicação servida por um workload. Para criá-los, consulte [Primeiros passos com Applications](/pt-br/documentacao/plataforma/applications/primeiros-passos/).
- **HTTPS support** ativado em **Protocol Settings** do workload, com um certificado que cubra os domínios do workload. Para a Azion solicitar e renovar um, consulte [Solicite um certificado Let's Encrypt](/pt-br/documentacao/guias/seguranca-de-aplicacoes/tls-e-certificados/como-gerar-um-certificado-lets-encrypt/). Para as portas HTTPS e os campos de TLS, consulte [Configurações de workload](/pt-br/documentacao/plataforma/workloads/configuracoes/#tls).
- Um [personal token](/pt-br/documentacao/guias/plataforma/conta-e-billing/personal-tokens/), para os procedimentos pela API.
- A [Azion CLI](/pt-br/documentacao/devtools/cli/) instalada e autorizada, para os procedimentos pela CLI.

Os exemplos criam a regra na aplicação `<application-id>`, servida em `www.example.com`. Substitua-os pelos seus valores.

---

## Crie a regra de redirecionamento

A regra não exige nenhum Produto na aplicação: `${uri}` lê o caminho sem Application Accelerator, e o behavior não recebe argumento.

**Console**

Para criar a regra no Azion Console:

1. **Vá para a aba Rules Engine**

   Acesse [Azion Console](https://console.azion.com/) > **Applications** > **sua aplicação** e vá para a aba **Rules Engine**.

2. **Selecione + Rule**

3. **Nomeie a regra**

   Insira um nome que identifique o redirecionamento. Por exemplo: `redirect to HTTPS`.

4. **Selecione Request Phase**

5. **Corresponda a todos os caminhos**

   Na seção **Criteria**, defina o critério como `${uri}` *starts with* `/`.

6. **Na seção Behaviors, selecione Redirect HTTP to HTTPS**

7. **Selecione Save**

A regra aparece na lista **Request** da aba **Rules Engine**.

**API**

Os critérios carregam `${uri}`, que um shell expande, então o corpo é enviado de um arquivo. Para criar a regra:

1. **Escreva a regra em um arquivo**

   Salve o conteúdo a seguir como `rule.json`:

   ```json
   {
     "name": "redirect to HTTPS",
     "active": true,
     "criteria": [[{ "variable": "${uri}", "conditional": "if", "operator": "starts_with", "argument": "/" }]],
     "behaviors": [{ "type": "redirect_http_to_https" }]
   }
   ```

2. **Envie a requisição de criação**

   ```bash
   curl --request POST \
     --url https://api.azion.com/v4/workspace/applications/<application-id>/request_rules \
     --header 'Accept: application/json' \
     --header 'Authorization: Token <personal-token>' \
     --header 'Content-Type: application/json' \
     --data @rule.json
   ```

A API responde `202` com `"state": "pending"` e a regra como foi armazenada, com o seu `id` e a sua `order` na fase.

**CLI**

A CLI lê a regra de um arquivo JSON. Para criar a regra:

1. **Escreva a regra em um arquivo**

   Salve o conteúdo a seguir como `rule.json`:

   ```json
   {
     "name": "redirect to HTTPS",
     "active": true,
     "criteria": [[{ "variable": "${uri}", "conditional": "if", "operator": "starts_with", "argument": "/" }]],
     "behaviors": [{ "type": "redirect_http_to_https" }]
   }
   ```

2. **Crie a regra**

   ```bash
   azion create rules-engine --application-id <application-id> --phase request --file rule.json
   ```

   O comando imprime o ID da regra:

   ```text
   Created Rules Engine with ID <rule-id>
   ```

Cada requisição feita por HTTP é redirecionada para HTTPS, e cada requisição HTTPS continua sem mudança. Uma regra nova leva alguns minutos para chegar a todos os data centers.

> **Atenção**
>
> Quando a origem redireciona requisições HTTPS de volta para HTTP, os dois redirecionamentos formam um loop que termina em um erro `500`. Defina **Transport Protocol Policy** do connector como *Force HTTP*, para que a Azion alcance a origem por HTTP, ou remova o redirecionamento. Para as correções, consulte [Códigos de status HTTP](/pt-br/documentacao/fundamentos/codigos-de-status-http/#500-internal-server-error).

---

## Posicione o redirecionamento antes das regras que encerram o processamento

A plataforma cria uma regra nova no fim da sua fase. Uma regra anterior cujo behavior encerra o processamento, como *Deliver*, *Deny (403 Forbidden)* ou *Finish Request Phase*, interrompe as regras depois dela, então as requisições a que essa regra corresponde nunca são redirecionadas. Quando a lista tiver uma regra assim, mova a regra de redirecionamento para antes dela.

**Console**

Para mover a regra no Azion Console:

1. **Vá para a aba Rules Engine**

   Acesse [Azion Console](https://console.azion.com/) > **Applications** > **sua aplicação** e vá para a aba **Rules Engine**.

2. **Mova a regra**

   Na lista **Request**, mova `redirect to HTTPS` para cima de todas as regras que encerram o processamento.

**API**

Para definir a ordem, envie os IDs das regras da fase na nova ordem, a regra de redirecionamento primeiro, no array `order`:

```bash
curl --request PUT \
  --url https://api.azion.com/v4/workspace/applications/<application-id>/request_rules/order \
  --header 'Accept: application/json' \
  --header 'Authorization: Token <personal-token>' \
  --header 'Content-Type: application/json' \
  --data '{ "order": [<redirect-rule-id>, <other-rule-id>] }'
```

A lista nomeia todas as regras da fase, e o campo `order` de cada regra passa então a guardar a sua nova posição, a partir de `0`.

**CLI**

Para definir a ordem, passe todos os IDs de regra da fase, a regra de redirecionamento primeiro:

```bash
azion update rules-engine-order --application-id <application-id> --phase request --rule-ids "<redirect-rule-id>,<other-rule-id>"
```

O comando confirma a nova ordem:

```text
Ordered Rules Engine of Application with ID <application-id>
```

A regra de redirecionamento é executada antes de qualquer regra que encerra o processamento, então cada requisição feita por HTTP chega a ela. Para ver quais regras foram executadas em uma requisição, ative [Debug Rules](/pt-br/documentacao/plataforma/applications/main-settings/#debug-rules).

---

## Próximos passos

- [Rules Engine para Applications](/pt-br/documentacao/plataforma/applications/rules-engine.md#redirect-http-to-https): O behavior Redirect HTTP to HTTPS e todos os outros behaviors que uma regra executa.
- [Configurações de workload](/pt-br/documentacao/plataforma/workloads/configuracoes.md#tls): O certificado, a versão mínima de TLS e o cipher suite que um workload apresenta.
- [Solicite um certificado Let's Encrypt](/pt-br/documentacao/guias/seguranca-de-aplicacoes/tls-e-certificados/como-gerar-um-certificado-lets-encrypt.md): Obtenha para os domínios do workload um certificado que a Azion renova para você.
- [Preparar aplicações web reguladas para auditorias de segurança](/pt-br/documentacao/casos-de-uso/proteger-aplicacoes-e-redes/preparar-aplicacoes-web-reguladas-para-auditorias-de-seguranca.md): Imponha HTTPS como um dos controles que uma auditoria pede.
