<a id="http-api"></a>

# API

O módulo `API` implementa uma interface HTTP RESTful para obter informações básicas
sobre o servidor web em formato JSON, bem como [estatísticas](#metrics) sobre conexões
de clientes, zonas de memória compartilhada, consultas DNS, requisições HTTP, cache de resposta HTTP,
sessões do módulo [stream](https://pt.angie.software//angie/docs/configuration/modules/stream/index.md#stream-core) e zonas dos módulos
[limit_conn http](https://pt.angie.software//angie/docs/configuration/modules/http/http_limit_conn.md#http-limit-conn), [limit_conn stream](https://pt.angie.software//angie/docs/configuration/modules/stream/stream_limit_conn.md#stream-limit-conn), [limit_req](https://pt.angie.software//angie/docs/configuration/modules/http/http_limit_req.md#http-limit-req) e [http upstream](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#http-upstream).

A interface aceita os métodos HTTP `GET` e `HEAD`;
uma requisição com outro método causará um erro:

```json
{
    "error": "MethodNotAllowed",
    "description": "The POST method is not allowed for the requested API element \"/\"."
}
```

No Angie PRO, esta interface inclui uma seção de [configuração dinâmica](#api-config) que permite alterar configurações sem recarregar a configuração ou
reiniciar; atualmente, a configuração de servidores individuais dentro de
[upstream](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-upstream) está disponível.

<a id="directives-6"></a>

## Diretivas

<a id="index-0"></a>

<a id="a-api"></a>

### api

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `api` path;   |
|-------------------------------------------------------------------------------------------|---------------|
| Padrão                                                                                    | —             |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | location      |

Habilita a interface HTTP RESTful em `location`.

O parâmetro path é obrigatório. Similar à diretiva [alias](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#alias), ele define o caminho para substituir aquele especificado em `location`, mas sobre a árvore da API ao invés do sistema de arquivos.

Se especificado em um `location` de prefixo:

```nginx
location /stats/ {
    api /status/http/server_zones/;
}
```

a parte da URI da requisição que corresponde ao prefixo /stats/ será substituída pelo caminho especificado no parâmetro path: /status/http/server_zones/. Por exemplo, uma requisição para /stats/foo/ acessará o elemento da API `/status/http/server_zones/foo/`.

Variáveis são permitidas: api /status/$module/server_zones/$name/ e uso dentro de location regex:

```nginx
location ~^/api/([^/]+)/(.*)$ {
    api /status/http/$1_zones/$2;
}
```

Aqui o parâmetro path define o caminho completo para o elemento da API;
assim, de uma requisição para `/api/location/data/` as seguintes variáveis serão extraídas:

```console
$1 = "location"
$2 = "data/"
```

E a requisição final será `/status/http/location_zones/data/`.

#### NOTE
No Angie PRO, você pode separar a [API de configuração dinâmica](#api-config) e a [API de status](#metrics) imutável que reflete
o estado atual:

```nginx
location /config/ {
    api /config/;
}

location /status/ {
    api /status/;
}
```

O parâmetro path também permite controlar o acesso à API:

```nginx
location /status/ {
    api /status/;

    allow 127.0.0.1;
    deny  all;
}
```

Ou:

```nginx
location /blog/requests/ {
    api /status/http/server_zones/blog/requests/;

    auth_basic           "blog";
    auth_basic_user_file conf/htpasswd;
}
```

#### NOTE
Se `api` for colocado em um `location` com uma barra final no prefixo
(por exemplo, `location /name/`),
e a diretiva [auto_redirect](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#auto-redirect) estiver definida como `default`,
requisições sem uma barra final serão redirecionadas (`/name -> /name/`).

<a id="index-1"></a>

<a id="a-api-config-files"></a>

### api_config_files

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `api_config_files` `on` | `off`;   |
|-------------------------------------------------------------------------------------------|------------------------------------|
| Padrão                                                                                    | off                                |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | location                           |

Habilita ou desabilita a adição do objeto `config_files`,
que lista o conteúdo de todos os arquivos de configuração do Angie
atualmente carregados pela instância do servidor,
à seção da API [/status/angie/](#status-angie).
Por exemplo, com esta configuração:

```nginx
location /status/ {
    api /status/;
    api_config_files on;
}
```

Uma requisição para `/status/angie/` retorna aproximadamente o seguinte:

```json
{
    "version":"|version|",
    "address":"192.168.16.5",
    "generation":1,
    "load_time":"|sampledateshort|T12:58:39.789Z",
    "config_files": {
        "/etc/angie/angie.conf": "...",
        "/etc/angie/mime.types": "..."
    }
}
```

Por padrão, a saída está desabilitada porque os arquivos de configuração podem conter
informações particularmente sensíveis e confidenciais.

<a id="metrics"></a>

## Métricas

O Angie publica estatísticas de uso na seção da API `/status/`; você pode
abrir acesso a ela definindo o `location` apropriado. Acesso completo:

```nginx
location /status/ {
    api /status/;
}
```

Exemplo de acesso parcial, já mostrado acima:

```nginx
location /stats/ {
    api /status/http/server_zones/;
}
```

<a id="example-configuration"></a>

### Exemplo de configuração

Com uma configuração incluindo `location /status/`, `resolver`, `http` em
`upstream`, `http server`, `location`, `cache`, `limit_conn` em
`http` e zonas `limit_req`:

```nginx
http {

    resolver 127.0.0.53 status_zone=resolver_zone;
    proxy_cache_path /var/cache/angie/cache keys_zone=cache_zone:2m;
    limit_conn_zone $binary_remote_addr zone=limit_conn_zone:10m;
    limit_req_zone $binary_remote_addr zone=limit_req_zone:10m rate=1r/s;

    upstream upstream {
        zone upstream 256k;
        server backend.example.com service=_example._tcp resolve max_conns=5;
       keepalive 4;
    }

    server {
        server_name www.example.com;
        listen 443 ssl;

        status_zone http_server_zone;
        proxy_cache cache_zone;
        proxy_cache_valid 200 10m;

        access_log /var/log/access.log main;

        location / {
            root /usr/share/angie/html;
            status_zone location_zone;
            limit_conn limit_conn_zone 1;
            limit_req zone=limit_req_zone burst=5;
        }
        location /status/ {
            api /status/;

            allow 127.0.0.1;
            deny all;
        }

    }
}
```

Em resposta à requisição `curl https://www.example.com/status/`, o Angie retorna:

### Árvore JSON

```json
{
    "angie": {
        "version":"|version|",
        "address":"192.168.16.5",
        "generation":1,
        "load_time":"|sampledateshort|T12:58:39.789Z"
    },

    "connections": {
        "accepted":2257,
        "dropped":0,
        "active":3,
        "idle":1
    },

    "slabs": {
        "cache_zone": {
            "pages": {
                "used":2,
                "free":506
            },

            "slots": {
                "64": {
                    "used":1,
                    "free":63,
                    "reqs":1,
                    "fails":0
                },

                "512": {
                    "used":1,
                    "free":7,
                    "reqs":1,
                    "fails":0
                }
            }
        },

        "limit_conn_zone": {
            "pages": {
                "used":2,
                "free":2542
            },

            "slots": {
                "64": {
                    "used":1,
                    "free":63,
                    "reqs":74,
                    "fails":0
                },

                "128": {
                    "used":1,
                    "free":31,
                    "reqs":1,
                    "fails":0
                }
            }
        },

        "limit_req_zone": {
            "pages": {
                "used":2,
                "free":2542
            },

            "slots": {
                "64": {
                    "used":1,
                    "free":63,
                    "reqs":1,
                    "fails":0
                },

                "128": {
                    "used":2,
                    "free":30,
                    "reqs":3,
                    "fails":0
                }
            }
        }
    },

    "http": {
        "server_zones": {
            "http_server_zone": {
                "ssl": {
                    "handshaked":4174,
                    "reuses":0,
                    "timedout":0,
                    "failed":0
                },

                "requests": {
                    "total":4327,
                    "processing":0,
                    "discarded":8
                },

                "responses": {
                    "200":4305,
                    "302":12,
                    "404":4
                },

                "data": {
                    "received":733955,
                    "sent":59207757
                }
            }
        },

        "location_zones": {
            "location_zone": {
                "requests": {
                    "total":4158,
                    "discarded":0
                },

                "responses": {
                    "200":4157,
                    "304":1
                },

                "data": {
                    "received":538200,
                    "sent":177606236
                }
            }
        },
        "caches": {
            "cache_zone": {
                "size":0,
                "cold":false,
                "hit": {
                    "responses":0,
                    "bytes":0
                },

                "stale": {
                    "responses":0,
                    "bytes":0
                },

                "updating": {
                    "responses":0,
                    "bytes":0
                },

                "revalidated": {
                    "responses":0,
                    "bytes":0
                },

                "miss": {
                    "responses":0,
                    "bytes":0,
                    "responses_written":0,
                    "bytes_written":0
                },

                "expired": {
                    "responses":0,
                    "bytes":0,
                    "responses_written":0,
                    "bytes_written":0
                },

                "bypass": {
                    "responses":0,
                    "bytes":0,
                    "responses_written":0,
                    "bytes_written":0
                }
            }
        },

        "limit_conns": {
            "limit_conn_zone": {
                "passed":73,
                "skipped":0,
                "rejected":0,
                "exhausted":0
            }
        },

        "limit_reqs": {
            "limit_req_zone": {
                "passed":54816,
                "skipped":0,
                "delayed":65,
                "rejected":26,
                "exhausted":0
            }
        },

        "upstreams": {
            "upstream": {
                "peers": {
                    "192.168.16.4:80": {
                        "server":"backend.example.com",
                        "service":"_example._tcp",
                        "backup":false,
                        "weight":5,
                        "state":"up",
                        "selected": {
                            "current":2,
                            "total":232
                        },

                        "max_conns":5,
                        "responses": {
                            "200":222,
                            "302":12
                        },

                        "data": {
                            "sent":543866,
                            "received":27349934
                        },

                        "health": {
                            "fails":0,
                            "unavailable":0,
                            "downtime":0
                        },

                        "sid":"<server_id>"
                    }
                },

                "keepalive":2
            }
        }
    },

    "resolvers": {
        "resolver_zone": {
            "queries": {
                "name":442,
                "srv":2,
                "addr":0
            },

            "responses": {
                "success":440,
                "timedout":1,
                "format_error":0,
                "server_failure":1,
                "not_found":1,
                "unimplemented":0,
                "refused":1,
                "other":0
            }
        }
    }
}
```

Um conjunto de métricas pode ser solicitado por ramo JSON individual construindo a requisição apropriada. Por exemplo:

```console
$ curl https://www.example.com/status/angie
$ curl https://www.example.com/status/connections
$ curl https://www.example.com/status/slabs
$ curl https://www.example.com/status/slabs/<zone>/slots
$ curl https://www.example.com/status/slabs/<zone>/slots/64
$ curl https://www.example.com/status/http/
$ curl https://www.example.com/status/http/acme_clients
$ curl https://www.example.com/status/http/acme_clients/<client>
$ curl https://www.example.com/status/http/metric_zones
$ curl https://www.example.com/status/http/metric_zones/<zone>/metrics
$ curl https://www.example.com/status/http/server_zones
$ curl https://www.example.com/status/http/server_zones/<http_server_zone>
$ curl https://www.example.com/status/http/server_zones/<http_server_zone>/ssl
```

<a id="api-date-format"></a>

#### NOTE
Por padrão, o módulo usa strings de formato ISO 8601 para datas;
para usar o formato inteiro UNIX epoch em vez disso,
adicione o parâmetro `date=epoch` à query string:

```console
$ curl https://www.example.com/status/angie/load_time

  "2024-04-01T00:59:59+01:00"

$ curl https://www.example.com/status/angie/load_time?date=epoch

  1711929599
```

<a id="server-status"></a>

### Status do servidor

<a id="status-angie"></a>

#### `/status/angie`

```json
{
    "version": "|version|",
    "build_time": "|sampledateshort|T16:05:43.805Z",
    "address": "192.168.16.5",
    "generation": 1,
    "load_time": "|sampledateshort|T16:15:43.805Z"
    "config_files": {
        "/etc/angie/angie.conf": "...",
        "/etc/angie/mime.types": "..."
    }
}
```

| `version`      | String; versão do servidor web Angie em execução                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `build`        | String; nome específico da build se especificado durante a compilação                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `build_time`   | String; o tempo de build do executável Angie<br/>no formato de [data](#api-date-format)                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `address`      | String; o endereço do servidor que aceitou a requisição da API                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `generation`   | Number; número total de recarregamentos de configuração desde o último início                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `load_time`    | String; tempo do último recarregamento de configuração<br/>no formato de [data](#api-date-format);<br/>valores string têm resolução de milissegundos                                                                                                                                                                                                                                                                                                                                                                                                            |
| `config_files` | Object; seus membros são nomes de caminho absolutos<br/>de todos os arquivos de configuração do Angie<br/>que estão atualmente carregados pela instância do servidor,<br/>e seus valores são representações string do conteúdo dos arquivos,<br/>por exemplo:<br/><br/>```json<br/>{<br/>    "/etc/angie/angie.conf": "server {\n  listen 80;\n  # ...\n\n}\n"<br/>}<br/>```<br/><br/>#### WARNING<br/>O objeto `config_files` está disponível em `/status/angie/`<br/>apenas se a diretiva<br/>[api_config_files](#a-api-config-files)<br/>estiver habilitada. |

<a id="status-angie-license"></a>

#### `/status/angie/license` (PRO)

```json
{
    "path": "/etc/angie/license.pem",
    "status": "valid",
    "owner": "Example Corp",
    "days_left": 30,
    "since": "2024-01-01",
    "until": "2025-01-01",
    "limits": {
        "worker_processes": 16,
        "worker_connections": 65535
    }
}
```

| `path`      | String; caminho completo para o arquivo de licença                                                                                                       |
|-------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|
| `status`    | String; status da licença: `missing`, `invalid`, `valid`,<br/>`grace`, `expired`, ou `pending`                                                           |
| `owner`     | String; proprietário da licença do assunto do certificado                                                                                                |
| `days_left` | Number; dias até que a licença mude de estado. Um valor negativo significa<br/>que a licença expirou, e o valor é o número de dias desde<br/>a expiração |
| `since`     | String; data de início de validade da licença                                                                                                            |
| `until`     | String; data de término de validade da licença                                                                                                           |
| `limits`    | Object; limites licenciados para a instância atual                                                                                                       |

<a id="api-status-connections"></a>

### Conexões

<a id="samp-status-connections"></a>

#### `/status/connections`

```json
{
  "accepted": 2257,
  "dropped": 0,
  "active": 3,
  "idle": 1
}
```

| `accepted`   | Number; o número total de conexões de cliente aceitas     |
|--------------|-----------------------------------------------------------|
| `dropped`    | Number; o número total de conexões de cliente descartadas |
| `active`     | Number; o número atual de conexões de cliente ativas      |
| `idle`       | Number; o número atual de conexões de cliente ociosas     |

<a id="shared-memory-zones-with-slab-allocation"></a>

### Zonas de memória compartilhada com alocação slab

<a id="samp-status-slabs-zone"></a>

#### `/status/slabs/<zone>`

Estatísticas de uso de zonas de memória compartilhada que utilizam [alocação slab](https://en.wikipedia.org/wiki/Slab_allocation), como [limit_conn](#limit-conn), [limit_req](#limit-req), e [cache HTTP](https://pt.angie.software//angie/docs/configuration/modules/http/http_proxy.md#proxy-cache):

```nginx
limit_conn_zone $binary_remote_addr zone=limit_conn_zone:10m;
limit_req_zone $binary_remote_addr zone=limit_req_zone:10m rate=1r/s;
proxy_cache cache_zone;
proxy_cache_valid 200 10m;
```

A zona de memória compartilhada especificada coletará as seguintes estatísticas:

| `pages`   | Object; estatísticas de páginas de memória                                                                                                                                                           |
|-----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `used`    | Number; o número de páginas de memória atualmente em uso                                                                                                                                             |
| `free`    | Number; o número de páginas de memória atualmente livres                                                                                                                                             |
| `slots`   | Object; estatísticas de slots de memória para cada tamanho de slot. O objeto `slots` contém dados para tamanhos de slot de memória (`8`, `16`, `32`, etc., até metade do tamanho da página em bytes) |
| `used`    | Number; o número de slots de memória atualmente em uso do tamanho especificado                                                                                                                       |
| `free`    | Number; o número de slots de memória atualmente livres do tamanho especificado                                                                                                                       |
| `reqs`    | Number; o número total de tentativas de alocar memória do tamanho especificado                                                                                                                       |
| `fails`   | Number; o número de tentativas malsucedidas de alocar memória do tamanho especificado                                                                                                                |

Exemplo:

```json
{
  "pages": {
    "used": 2,
    "free": 506
  },

  "slots": {
    "64": {
      "used": 1,
      "free": 63,
      "reqs": 1,
      "fails": 0
    }
  }
}
```

<a id="dns-queries-to-resolver"></a>

### Consultas DNS ao resolver

<a id="api-status-resolvers"></a>

#### `/status/resolvers/<zone>`

Para coletar estatísticas do resolver,
a diretiva [resolver](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#resolver) deve definir o parâmetro `status_zone`
([HTTP](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#resolver-status) ou [Stream](https://pt.angie.software//angie/docs/configuration/modules/stream/index.md#s-resolver-status)):

```nginx
resolver 127.0.0.53 status_zone=resolver_zone;
```

A zona de memória compartilhada especificada coletará as seguintes estatísticas:

| `queries`        | Object; estatísticas de consultas                                                         |
|------------------|-------------------------------------------------------------------------------------------|
| `name`           | Number; o número de consultas para resolver nomes para endereços<br/>(consultas A e AAAA) |
| `srv`            | Number; o número de consultas para resolver serviços para endereços<br/>(consultas SRV)   |
| `addr`           | Number; o número de consultas para resolver endereços para nomes<br/>(consultas PTR)      |
| `responses`      | Object; estatísticas de respostas                                                         |
| `success`        | Number; o número de respostas bem-sucedidas                                               |
| `timedout`       | Number; o número de consultas que expiraram                                               |
| `format_error`   | Number; o número de respostas com código 1 (Format Error)                                 |
| `server_failure` | Number; o número de respostas com código 2 (Server Failure)                               |
| `not_found`      | Number; o número de respostas com código 3 (Name Error)                                   |
| `unimplemented`  | Number; o número de respostas com código 4 (Not Implemented)                              |
| `refused`        | Number; o número de respostas com código 5 (Refused)                                      |
| `other`          | Number; o número de consultas completadas com outro código não-zero                       |
| `sent`           | Object; estatísticas de consultas DNS enviadas                                            |
| `a`              | Number; o número de consultas do tipo A                                                   |
| `aaaa`           | Number; o número de consultas do tipo AAAA                                                |
| `ptr`            | Number; o número de consultas do tipo PTR                                                 |
| `srv`            | Number; o número de consultas do tipo SRV                                                 |

#### NOTE
`queries` e `responses` contabilizam cada solicitação de resolução
que o Angie faz internamente, incluindo as servidas pelo cache TTL.
`sent` contabiliza os pacotes efetivamente enviados ao servidor de nomes;
a diferença entre os dois reflete os acertos de cache.

Os códigos de resposta são descritos na [RFC 1035](https://datatracker.ietf.org/doc/html/rfc1035.html), seção [4.1.1](https://datatracker.ietf.org/doc/html/rfc1035.html#section-4.1.1).

Vários tipos de registro DNS são detalhados na [RFC 1035](https://datatracker.ietf.org/doc/html/rfc1035.html),
[RFC 2782](https://datatracker.ietf.org/doc/html/rfc2782.html), e
[RFC 3596](https://datatracker.ietf.org/doc/html/rfc3596.html).

Exemplo:

```json
{
  "queries": {
    "name": 442,
    "srv": 2,
    "addr": 0
  },

  "responses": {
    "success": 440,
    "timedout": 1,
    "format_error": 0,
    "server_failure": 1,
    "not_found": 1,
    "unimplemented": 0,
    "refused": 1,
    "other": 0
  },

  "sent": {
    "a": 185,
    "aaaa": 245,
    "srv": 2,
    "ptr": 12
  }
}
```

<a id="http-server-and-location"></a>

### Servidor HTTP e localização

<a id="api-status-http-server-zones"></a>

#### `/status/http/server_zones/<zone>`

Para coletar as métricas do `server`,
defina a diretiva [status_zone](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#status-zone) no contexto [server](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#server):

```nginx
server {
    ...
    status_zone server_zone;
}
```

Para agrupar as métricas por um valor personalizado, use a sintaxe alternativa.
Aqui, as métricas são agregadas por [$host](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#v-host),
com cada grupo relatado como uma zona independente:

```nginx
status_zone $host zone=server_zone:5;
```

A zona de memória compartilhada especificada coletará as seguintes estatísticas:

| `ssl`        | Object; estatísticas SSL.<br/>Presente se `server` definir `listen ssl;`             |
|--------------|--------------------------------------------------------------------------------------|
| `handshaked` | Number; o número total de handshakes SSL bem-sucedidos                               |
| `reuses`     | Number; o número total de reutilizações de sessão durante o handshake SSL            |
| `timedout`   | Number; o número total de handshakes SSL que expiraram                               |
| `failed`     | Number; o número total de handshakes SSL que falharam                                |
| `requests`   | Object; estatísticas de requisições                                                  |
| `total`      | Number; o número total de requisições de clientes                                    |
| `processing` | Number; o número de requisições de clientes sendo processadas atualmente             |
| `discarded`  | Number; o número total de requisições de clientes concluídas sem enviar uma resposta |
| `responses`  | Object; estatísticas de respostas                                                    |
| `<code>`     | Number; um número não-zero de respostas com status <code> (100-599)                  |
| `xxx`        | Number; um número não-zero de respostas com outros códigos de status                 |
| `data`       | Object; estatísticas de dados                                                        |
| `received`   | Number; o número total de bytes recebidos de clientes                                |
| `sent`       | Number; o número total de bytes enviados para clientes                               |

Exemplo:

```json
{
    "ssl":{
        "handshaked":4174,
        "reuses":0,
        "timedout":0,
        "failed":0
    },

    "requests":{
        "total":4327,
        "processing":0,
        "discarded":0
    },

    "responses":{
        "200":4305,
        "302":6,
        "304":12,
        "404":4
    },

    "data":{
        "received":733955,
        "sent":59207757
    }
}
```

<a id="api-status-http-location-zones"></a>

#### `/status/http/location_zones/<zone>`

Para coletar as métricas do `location`, defina a diretiva [status_zone](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#status-zone)
no contexto de [location](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#location) ou [if in location](https://pt.angie.software//angie/docs/configuration/modules/http/http_rewrite.md#if):

```nginx
location / {
    root /usr/share/angie/html;
    status_zone location_zone;

    if ($request_uri ~* "^/condition") {
        # ...
        status_zone if_location_zone;
    }
}
```

Para agrupar as métricas por um valor personalizado, use a sintaxe alternativa.
Aqui, as métricas são agregadas por [$host](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#v-host),
com cada grupo relatado como uma zona independente:

```nginx
status_zone $host zone=server_zone:5;
```

A zona de memória compartilhada especificada coletará as seguintes estatísticas:

| `requests`   | Object; estatísticas de requisições                                                  |
|--------------|--------------------------------------------------------------------------------------|
| `total`      | Number; o número total de requisições de clientes                                    |
| `discarded`  | Number; o número total de requisições de clientes concluídas sem enviar uma resposta |
| `responses`  | Object; estatísticas de respostas                                                    |
| `<code>`     | Number; um número não-zero de respostas com status <code> (100-599)                  |
| `xxx`        | Number; um número não-zero de respostas com outros códigos de status                 |
| `data`       | Object; estatísticas de dados                                                        |
| `received`   | Number; o número total de bytes recebidos de clientes                                |
| `sent`       | Number; o número total de bytes enviados para clientes                               |

Exemplo:

```json
{
  "requests": {
    "total": 4158,
    "discarded": 0
  },

  "responses": {
    "200": 4157,
    "304": 1
  },

  "data": {
    "received": 538200,
    "sent": 177606236
  }
}
```

<a id="api-status-http-metric-zones"></a>

#### `/status/http/metric_zones/<zone>`

Métricas personalizadas definidas por [metric_zone](https://pt.angie.software//angie/docs/configuration/modules/http/http_metric.md#metric-zone) ou [metric_complex_zone](https://pt.angie.software//angie/docs/configuration/modules/http/http_metric.md#metric-complex-zone)
no contexto `http`. As métricas são atualizadas com a diretiva [metric](https://pt.angie.software//angie/docs/configuration/modules/http/http_metric.md#id3)
ou as variáveis do módulo.

| `discarded`   | Number; o número de entradas de métricas descartadas porque a zona ficou sem<br/>memória.                                                                                                                                         |
|---------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `metrics`     | Object; métricas por chave. Para zonas de métrica única, os valores são números.<br/>Para zonas complexas, os valores são objetos com nomes de métricas. Para o modo<br/>histograma, os valores são objetos com nomes de buckets. |

Se `discard_key` estiver definido e algumas entradas tiverem expirado,
suas métricas agregadas são expostas sob esta chave.

Exemplo:

```json
{
    "discarded": 3,
    "metrics": {
        "example.com": {
            "count": 42,
            "max": 8
        }
        "expired": {
            "count": 10,
            "max": 3.2
        }
    }
}
```

<a id="stream-server"></a>

### Servidor stream

<a id="api-status-stream-server-zones"></a>

#### `/status/stream/server_zones/<zone>`

Para coletar as métricas do `server`,
defina a diretiva [status_zone](https://pt.angie.software//angie/docs/configuration/modules/stream/index.md#s-status-zone) no contexto [server](https://pt.angie.software//angie/docs/configuration/modules/stream/index.md#s-server):

```nginx
server {
    ...
    status_zone server_zone;
}
```

Para agrupar as métricas por um valor personalizado, use a sintaxe alternativa.
Aqui, as métricas são agregadas por [$host](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#v-host),
com cada grupo relatado como uma zona independente:

```nginx
status_zone $host zone=server_zone:5;
```

A zona de memória compartilhada especificada coletará as seguintes estatísticas:

| `ssl`                 | Object; estatísticas SSL.<br/>Presente se `server` definir `listen ssl;`                                                                                               |
|-----------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `handshaked`          | Number; o número total de handshakes SSL bem-sucedidos                                                                                                                 |
| `reuses`              | Number; o número total de reutilizações de sessão durante o handshake SSL                                                                                              |
| `timedout`            | Number; o número total de handshakes SSL que expiraram                                                                                                                 |
| `failed`              | Number; o número total de handshakes SSL que falharam                                                                                                                  |
| `connections`         | Object; estatísticas de conexões                                                                                                                                       |
| `total`               | Number; o número total de conexões de clientes                                                                                                                         |
| `processing`          | Number; o número de conexões de clientes sendo processadas atualmente                                                                                                  |
| `discarded`           | Number; o número total de conexões de clientes<br/>concluídas sem criar uma sessão                                                                                     |
| `passed`              | Number; o número total de conexões de clientes<br/>redirecionadas para outra porta de escuta com diretivas `pass`                                                      |
| `sessions`            | Object; estatísticas de sessões                                                                                                                                        |
| `success`             | Number; o número de sessões concluídas com código 200, que significa conclusão bem-sucedida                                                                            |
| `invalid`             | Number; o número de sessões concluídas com código 400, que acontece quando os dados do cliente não puderam ser analisados, por exemplo, o cabeçalho do protocolo PROXY |
| `forbidden`           | Number; o número de sessões concluídas com código 403, quando o acesso foi proibido, por exemplo, quando o acesso é limitado para determinados endereços de clientes   |
| `internal_error`      | Number; o número de sessões concluídas com código 500, erro interno do servidor                                                                                        |
| `bad_gateway`         | Number; o número de sessões concluídas com código 502, gateway inválido, por exemplo, se um servidor upstream não pôde ser selecionado ou alcançado                    |
| `service_unavailable` | Number; o número de sessões concluídas com código 503, serviço indisponível, por exemplo, quando o acesso é limitado pelo número de conexões                           |
| `data`                | Object; estatísticas de dados                                                                                                                                          |
| `received`            | Number; o número total de bytes recebidos de clientes                                                                                                                  |
| `sent`                | Number; o número total de bytes enviados para clientes                                                                                                                 |

Exemplo:

```json
{
  "ssl": {
    "handshaked": 24,
    "reuses": 0,
    "timedout": 0,
    "failed": 0
  },

  "connections": {
    "total": 24,
    "processing": 1,
    "discarded": 0,
    "passed": 2
  },

  "sessions": {
    "success": 24,
    "invalid": 0,
    "forbidden": 0,
    "internal_error": 0,
    "bad_gateway": 0,
    "service_unavailable": 0
  },

  "data": {
    "received": 2762947,
    "sent": 53495723
  }
}
```

<a id="http-caches"></a>

### Caches HTTP

```nginx
proxy_cache cache_zone;
proxy_cache_valid 200 10m;
```

<a id="api-status-http-caches"></a>

#### `/status/http/caches/<cache>`

Para cada zona configurada com [proxy_cache](https://pt.angie.software//angie/docs/configuration/modules/http/http_proxy.md#proxy-cache), os seguintes dados são
armazenados:

```json
{
  "name_zone": {
    "size": 0,
    "cold": false,
    "hit": {
      "responses": 0,
      "bytes": 0
    },

    "stale": {
      "responses": 0,
      "bytes": 0
    },

    "updating": {
      "responses": 0,
      "bytes": 0
    },

    "revalidated": {
      "responses": 0,
      "bytes": 0
    },

    "miss": {
      "responses": 0,
      "bytes": 0,
      "responses_written": 0,
      "bytes_written": 0
    },

    "expired": {
      "responses": 0,
      "bytes": 0,
      "responses_written": 0,
      "bytes_written": 0
    },

    "bypass": {
      "responses": 0,
      "bytes": 0,
      "responses_written": 0,
      "bytes_written": 0
    }
  }
}
```

| `size`              | Número; o tamanho atual do cache                                                                                                                                                                                                                      |
|---------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `max_size`          | Número; limite configurado para o tamanho máximo do cache                                                                                                                                                                                             |
| `cold`              | Booleano; `true` enquanto o cache loader carrega dados do disco                                                                                                                                                                                       |
| `hit`               | Objeto; estatísticas de respostas válidas em cache ([proxy_cache_valid](https://pt.angie.software//angie/docs/configuration/modules/http/http_proxy.md#proxy-cache-valid))                                                                            |
| `responses`         | Número; o número total de respostas lidas do cache                                                                                                                                                                                                    |
| `bytes`             | Número; o número total de bytes lidos do cache                                                                                                                                                                                                        |
| `stale`             | Objeto; estatísticas de respostas obsoletas obtidas do cache ([proxy_cache_use_stale](https://pt.angie.software//angie/docs/configuration/modules/http/http_proxy.md#proxy-cache-use-stale))                                                          |
| `responses`         | Número; o número total de respostas lidas do cache                                                                                                                                                                                                    |
| `bytes`             | Número; o número total de bytes lidos do cache                                                                                                                                                                                                        |
| `updating`          | Objeto; estatísticas de respostas obsoletas obtidas do cache enquanto as respostas estavam sendo atualizadas ([proxy_cache_use_stale](https://pt.angie.software//angie/docs/configuration/modules/http/http_proxy.md#proxy-cache-use-stale) updating) |
| `responses`         | Número; o número total de respostas lidas do cache                                                                                                                                                                                                    |
| `bytes`             | Número; o número total de bytes lidos do cache                                                                                                                                                                                                        |
| `revalidated`       | Objeto; estatísticas de respostas expiradas e revalidadas obtidas do cache ([proxy_cache_revalidate](https://pt.angie.software//angie/docs/configuration/modules/http/http_proxy.md#proxy-cache-revalidate))                                          |
| `responses`         | Número; o número total de respostas lidas do cache                                                                                                                                                                                                    |
| `bytes`             | Número; o número total de bytes lidos do cache                                                                                                                                                                                                        |
| `miss`              | Objeto; estatísticas de respostas não encontradas no cache                                                                                                                                                                                            |
| `responses`         | Número; o número total de respostas correspondentes                                                                                                                                                                                                   |
| `bytes`             | Número; o número total de bytes lidos do servidor com proxy                                                                                                                                                                                           |
| `responses_written` | Número; o número total de respostas escritas no cache                                                                                                                                                                                                 |
| `bytes_written`     | Número; o número total de bytes escritos no cache                                                                                                                                                                                                     |
| `expired`           | Objeto; estatísticas de respostas expiradas não obtidas do cache                                                                                                                                                                                      |
| `responses`         | Número; o número total de respostas correspondentes                                                                                                                                                                                                   |
| `bytes`             | Número; o número total de bytes lidos do servidor com proxy                                                                                                                                                                                           |
| `responses_written` | Número; o número total de respostas escritas no cache                                                                                                                                                                                                 |
| `bytes_written`     | Número; o número total de bytes escritos no cache                                                                                                                                                                                                     |
| `bypass`            | Objeto; estatísticas de respostas não consultadas no cache ([proxy_cache_bypass](https://pt.angie.software//angie/docs/configuration/modules/http/http_proxy.md#proxy-cache-bypass))                                                                  |
| `responses`         | Número; o número total de respostas correspondentes                                                                                                                                                                                                   |
| `bytes`             | Número; o número total de bytes lidos do servidor com proxy                                                                                                                                                                                           |
| `responses_written` | Número; o número total de respostas escritas no cache                                                                                                                                                                                                 |
| `bytes_written`     | Número; o número total de bytes escritos no cache                                                                                                                                                                                                     |

No Angie PRO, se o cache sharding estiver habilitado com diretivas [proxy_cache_path](https://pt.angie.software//angie/docs/configuration/modules/http/http_proxy.md#proxy-cache-path),
fragmentos individuais são expostos como membros de objeto de um objeto `shards`:

| `shards`   | Objeto; lista fragmentos individuais como membros                             |
|------------|-------------------------------------------------------------------------------|
| `<shard>`  | Objeto; representa um fragmento individual com seu caminho de cache como nome |
| `size`     | Número; o tamanho atual do fragmento                                          |
| `max_size` | Número; tamanho máximo do fragmento, se configurado                           |
| `cold`     | Booleano; `true` enquanto o cache loader carrega dados do disco               |
```json
{
  "name_zone": {
    "shards": {
        "/path/to/shard1": {
            "size": 0,
            "cold": false
        },

        "/path/to/shard2": {
            "size": 0,
            "cold": false
        }
    }
}
```

<a id="http-acme-clients"></a>

### Clientes ACME

<a id="api-status-http-acme-clients"></a>

#### `/status/http/acme_clients/<client>`

Para cada [acme_client](https://pt.angie.software//angie/docs/configuration/modules/http/http_acme.md#acme-client) configurado no bloco `http`, retorna o
status atual do cliente e do certificado:

```json
{
  "state": "ready",
  "certificate": "valid",
  "details": "The client is ready to request a certificate.",
  "next_run": "|sampledateshort|T16:15:43.805Z"
}
```

| `state`       | String; estado do cliente ACME. Valores possíveis: `ready`,<br/>`requesting`, `disabled`, `failed`.                                          |
|---------------|----------------------------------------------------------------------------------------------------------------------------------------------|
| `certificate` | String; status do certificado. Valores possíveis: `valid`,<br/>`expired`, `missing`, `mismatch`, `error`.                                    |
| `details`     | String; detalhes breves do status da última operação ACME.                                                                                   |
| `next_run`    | Data; próxima tentativa agendada para solicitar ou renovar o certificado.<br/>Não retornado quando `state` é `disabled` ou<br/>`requesting`. |

<a id="limit-conn"></a>

### limit_conn

```nginx
limit_conn_zone $binary_remote_addr zone=limit_conn_zone:10m;
```

<a id="api-status-http-limit-conns"></a>

#### `/status/http/limit_conns/<zone>`, `/status/stream/limit_conns/<zone>`

Objetos para cada [limit_conn em http](#limit-conn) ou [limit_conn em stream](https://pt.angie.software//angie/docs/configuration/modules/stream/stream_limit_conn.md#s-limit-conn) configurado nos contextos com os seguintes campos:

```json
{
  "passed": 73,
  "skipped": 0,
  "rejected": 0,
  "exhausted": 0
}
```

| `passed`    | Número; o número total de conexões aprovadas                                                             |
|-------------|----------------------------------------------------------------------------------------------------------|
| `skipped`   | Número; o número total de conexões aprovadas com chave de comprimento zero, ou chave excedendo 255 bytes |
| `rejected`  | Número; o número total de conexões excedendo o limite configurado                                        |
| `exhausted` | Número; o número total de conexões rejeitadas devido ao esgotamento do armazenamento da zona             |

<a id="limit-req"></a>

### limit_req

```nginx
limit_req_zone $binary_remote_addr zone=limit_req_zone:10m rate=1r/s;
```

<a id="api-status-http-limit-reqs"></a>

#### `/status/http/limit_reqs/<zone>`

Objetos para cada [limit_req](#limit-req) configurado com os seguintes campos:

```json
{
  "passed": 54816,
  "skipped": 0,
  "delayed": 65,
  "rejected": 26,
  "exhausted": 0
}
```

| `passed`    | Número; o número total de requisições aprovadas                                                             |
|-------------|-------------------------------------------------------------------------------------------------------------|
| `skipped`   | Número; o número total de requisições aprovadas com chave de comprimento zero, ou chave excedendo 255 bytes |
| `delayed`   | Número; o número total de requisições atrasadas                                                             |
| `rejected`  | Número; o número total de requisições rejeitadas                                                            |
| `exhausted` | Número; o número total de requisições rejeitadas devido ao esgotamento do armazenamento da zona             |

<a id="a-upstream"></a>

### HTTP upstream

Para habilitar a coleta das seguintes métricas,
defina a diretiva [zone](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-zone) no contexto [upstream](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-upstream),
por exemplo:

```nginx
upstream upstream {
    zone upstream 256k;
    server backend.example.com service=_example._tcp resolve max_conns=5;
    keepalive 4;
}
```

<a id="api-status-http-upstreams"></a>

#### `/status/http/upstreams/<upstream>`

onde <upstream> é o nome de qualquer [upstream](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-upstream) especificado com a diretiva [zone](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-zone)

```json
{
    "peers": {
        "192.168.16.4:80": {
            "server": "backend.example.com",
            "service": "_example._tcp",
            "backup": false,
            "weight": 5,
            "state": "up",
            "selected": {
                "current": 2,
                "total": 232
            },

            "max_conns": 5,
            "responses": {
                "200": 222,
                "302": 12
            },

            "data": {
                "sent": 543866,
                "received": 27349934
            },

            "health": {
                "fails": 0,
                "unavailable": 0,
                "downtime": 0
            },

            "sid": "<server_id>"
        }
    },

    "keepalive": 2
}
```

| `peers`         | Objeto; contém as métricas dos peers do upstream como subobjetos<br/>cujos nomes são representações canônicas dos endereços dos peers.<br/>Membros de cada subobjeto:                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|-----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `server`        | String; o parâmetro da diretiva [server](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-server)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `service`       | String; nome do serviço como especificado na diretiva [server](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-server), se configurado                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `backup`        | Booleano; `true` para servidores de backup                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `weight`        | Número; [peso](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-server) configurado                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `state`         | String; o estado atual do peer e quais requisições são enviadas para ele:<br/><br/>- `busy`: indica que o número de requisições para o servidor<br/>  atingiu o limite definido por [max_conns](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-server),<br/>  e nenhuma nova requisição é enviada para ele;<br/>- `down`: desabilitado manualmente, nenhuma requisição é enviada;<br/>- `recovering`: recuperando após uma falha<br/>  de acordo com [slow_start](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#slow-start),<br/>  mais e mais requisições são enviadas ao longo do tempo;<br/>- `unavailable`: atingiu o limite [max_fails](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#max-fails),<br/>  apenas requisições de teste do cliente são enviadas<br/>  em intervalos definidos por [fail_timeout](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#fail-timeout);<br/>- `up`: operacional, requisições são enviadas normalmente;<br/><br/>Estados adicionais no Angie PRO:<br/><br/>- `checking`: configurado como `essential` e sendo verificado,<br/>  apenas [requisições de sonda](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream_probe.md#u-upstream-probe) são enviadas;<br/>- `draining`: similar a `down`,<br/>  mas requisições de sessões previamente vinculadas<br/>  (via [sticky](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-sticky)) ainda são enviadas;<br/>- `unhealthy`: não operacional,<br/>  apenas [requisições de sonda](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream_probe.md#u-upstream-probe) são enviadas. |
| `selected`      | Objeto; estatísticas de seleção de peer                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `current`       | Número; o número atual de conexões para o peer                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `total`         | Número; número total de requisições encaminhadas para o peer                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `last`          | String ou número; momento em que o peer foi selecionado pela última vez,<br/>formatado como uma [data](#api-date-format)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `max_conns`     | Número; o número [máximo](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-server) configurado de conexões ativas simultâneas para o peer, se especificado                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `responses`     | Objeto; estatísticas de respostas                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `<code>`        | Número; um número não-zero de respostas com status <code> (100-599)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `xxx`           | Número; um número não-zero de respostas com outros códigos de status                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `data`          | Objeto; estatísticas de dados                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `received`      | Número; o número total de bytes recebidos do peer                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `sent`          | Número; o número total de bytes enviados para o peer                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `health`        | Objeto; estatísticas de saúde                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `fails`         | Número; o número total de tentativas malsucedidas de comunicação com o peer                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `unavailable`   | Número; quantas vezes o peer ficou `unavailable` devido ao atingimento do limite [max_fails](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#max-fails)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `downtime`      | Número; o tempo total (em milissegundos) quando o peer estava `unavailable` para seleção                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `downstart`     | String ou número; momento em que o peer ficou `unavailable`,<br/>formatado como uma [data](#api-date-format)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `header_time`   | Número; tempo médio (em milissegundos)<br/>para receber os cabeçalhos de resposta do servidor;<br/>veja [response_time_factor (PRO)](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-response-time-factor)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `response_time` | Número; tempo médio (em milissegundos)<br/>para receber a resposta completa do servidor;<br/>veja [response_time_factor (PRO)](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-response-time-factor)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `sid`           | String; [id configurado](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#reresolve) do servidor no grupo upstream                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `keepalive`     | Número; o número atual de conexões em cache                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `backup_switch` | Objeto; contém o estado atual da lógica de backup ativo,<br/>presente se [backup_switch (PRO)](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-backup-switch) estiver configurado para o upstream                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `active`        | Número; o nível do grupo ativo<br/>que está sendo usado atualmente para balanceamento de carga de requisições.<br/>Se o grupo ativo for o primário, o valor é 0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `timeout`       | Número; tempo de espera restante em milissegundos,<br/>após o qual o balanceador irá verificar novamente por nós saudáveis<br/>em grupos com níveis mais baixos, começando pelo grupo primário,<br/>enquanto grupos com níveis mais altos não são verificados;<br/>não exibido para o grupo primário (nível 0)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |

<a id="samp-health-probes-pro"></a>

##### `health/probes` (PRO)

#### Versionchanged
Alterado na versão 1.2.0: PRO

Se o upstream tiver sondas [upstream_probe (PRO)](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream_probe.md#u-upstream-probe) configuradas,
o objeto `health` também possui um subobjeto `probes`
que armazena os contadores de sonda de saúde do servidor,
enquanto `state`, além dos valores listados na tabela acima,
também pode ser `checking` e `unhealthy`:

```json
{
    "192.168.16.4:80": {
        "state": "unhealthy",
        "...": "...",
        "health": {
            "...": "...",
            "probes": {
                "count": 10,
                "fails": 10,
                "last": "|sampledateshort|T09:56:07Z"
            }
        }
    }
}
```

O valor `checking` de `state` não é contado como `downtime`
e significa que o servidor, que possui uma sonda configurada como `essential`,
ainda não foi verificado;
o valor `unhealthy` significa que o servidor está com mau funcionamento.
Ambos os estados também implicam que o servidor não está incluído no balanceamento de carga.
Para detalhes das sondas de saúde, veja [upstream_probe](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream_probe.md#u-upstream-probe).

Contadores em `probes`:

| `count`   | Número; total de sondas para este servidor                                                 |
|-----------|--------------------------------------------------------------------------------------------|
| `fails`   | Número; total de sondas falhadas                                                           |
| `last`    | String ou número; momento da última sonda,<br/>formatado como uma [data](#api-date-format) |

<a id="a-queue"></a>

##### `queue` (PRO)

#### Versionchanged
Alterado na versão 1.4.0: PRO

Se uma [fila de requisições](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-queue) estiver configurada para o upstream,
o objeto upstream também contém um objeto `queue` aninhado
com contadores da fila de requisições:

```json
{
    "queue": {
        "queued": 20112,
        "waiting": 1011,
        "dropped": 6031,
        "timedout": 560,
        "overflows": 13
    }
}
```

Os valores dos contadores são somados em todos os processos worker:

| `queued`    | Número; número total de requisições que entraram na fila                                                   |
|-------------|------------------------------------------------------------------------------------------------------------|
| `waiting`   | Número; número atual de requisições na fila                                                                |
| `dropped`   | Número; número total de requisições removidas da fila<br/>porque o cliente fechou prematuramente a conexão |
| `timedout`  | Número; número total de requisições removidas da fila devido a timeout                                     |
| `overflows` | Número; número total de ocorrências de overflow da fila                                                    |

<a id="a-s-upstream"></a>

### Upstream de stream

Para habilitar a coleta das seguintes métricas,
defina a diretiva [zone](https://pt.angie.software//angie/docs/configuration/modules/stream/stream_upstream.md#s-u-zone) no contexto [upstream](https://pt.angie.software//angie/docs/configuration/modules/stream/stream_upstream.md#s-u-upstream),
por exemplo:

```nginx
upstream upstream {
    zone upstream 256k;
    server backend.example.com service=_example._tcp resolve max_conns=5;
    keepalive 4;
}
```

<a id="api-status-stream-upstreams"></a>

#### `/status/stream/upstreams/<upstream>`

Aqui, <upstream> é o nome de um [upstream](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-upstream) que está
configurado com uma diretiva [zone](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-zone).

```json
{
    "peers": {
        "192.168.16.4:1935": {
            "server": "backend.example.com",
            "service": "_example._tcp",
            "backup": false,
            "weight": 5,
            "state": "up",
            "selected": {
                "current": 2,
                "total": 232
            },

            "max_conns": 5,
            "data": {
                "sent": 543866,
                "received": 27349934
            },

            "health": {
                "fails": 0,
                "unavailable": 0,
                "downtime": 0
            }
        }
    }
}
```

| `peers`                             | Objeto; contém as métricas dos peers do upstream como subobjetos<br/>cujos nomes são representações canônicas dos endereços dos peers.<br/>Membros de cada subobjeto:                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
|-------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `server`                            | String; endereço definido pela diretiva [server](https://pt.angie.software//angie/docs/configuration/modules/stream/stream_upstream.md#s-u-server)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `service`                           | String; nome do serviço, se definido pela diretiva [server](https://pt.angie.software//angie/docs/configuration/modules/stream/stream_upstream.md#s-u-server)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `backup`                            | Booleano; `true` para servidores de backup                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `weight`                            | Número; o [peso](https://pt.angie.software//angie/docs/configuration/modules/stream/stream_upstream.md#s-u-server) definido para o peer                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `state`                             | String; o estado atual do peer e quais requisições são enviadas para ele:<br/><br/>- `busy`: indica que o número de requisições para o servidor<br/>  atingiu o limite definido por [max_conns](https://pt.angie.software//angie/docs/configuration/modules/stream/stream_upstream.md#s-u-server),<br/>  e nenhuma nova requisição é enviada para ele<br/>- `down`: desabilitado manualmente, nenhuma requisição é enviada<br/>- `recovering`: recuperando após uma falha<br/>  de acordo com [slow_start](https://pt.angie.software//angie/docs/configuration/modules/stream/stream_upstream.md#s-slow-start),<br/>  mais e mais requisições são enviadas ao longo do tempo<br/>- `unavailable`: atingiu o limite [max_fails](https://pt.angie.software//angie/docs/configuration/modules/stream/stream_upstream.md#s-max-fails),<br/>  apenas requisições de teste do cliente são enviadas<br/>  em intervalos definidos por [fail_timeout](https://pt.angie.software//angie/docs/configuration/modules/stream/stream_upstream.md#s-fail-timeout)<br/>- `up`: operacional, requisições são enviadas normalmente<br/><br/>Estados adicionais no Angie PRO:<br/><br/>- `checking`: configurado como `essential` e sendo verificado,<br/>  apenas [requisições de sonda](https://pt.angie.software//angie/docs/configuration/modules/stream/stream_upstream_probe.md#s-u-upstream-probe) são enviadas<br/>- `draining`: similar a `down`,<br/>  mas requisições de sessões previamente vinculadas<br/>  (via [sticky](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-sticky)) ainda são enviadas<br/>- `unhealthy`: não operacional,<br/>  apenas [requisições de sonda](https://pt.angie.software//angie/docs/configuration/modules/stream/stream_upstream_probe.md#s-u-upstream-probe) são enviadas |
| `selected`                          | Objeto; estatísticas sobre a seleção deste peer para conexões                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `current`                           | Número; número atual de conexões para o peer                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `total`                             | Número; número total de conexões encaminhadas para o peer                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `last`                              | String ou número; momento em que o peer foi selecionado pela última vez,<br/>formatado como uma [data](#api-date-format)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `max_conns`                         | Número;<br/>número [máximo](https://pt.angie.software//angie/docs/configuration/modules/stream/stream_upstream.md#s-u-server)<br/>de conexões ativas simultâneas para o peer, se definido                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `data`                              | Objeto; estatísticas de transferência de dados                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `received`                          | Número; total de bytes recebidos do peer                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `sent`                              | Número; total de bytes enviados para o peer                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `health`                            | Objeto; estatísticas de saúde do peer                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `fails`                             | Número; total de tentativas falhadas para alcançar o peer                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `unavailable`                       | Número; número total de vezes que o peer ficou `unavailable` devido a<br/>atingir o valor [max_fails](https://pt.angie.software//angie/docs/configuration/modules/stream/stream_upstream.md#s-max-fails)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `downtime`                          | Número; tempo total (em milissegundos) que o peer esteve<br/>`unavailable` (indisponível para seleção)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `downstart`                         | String ou número; momento em que o peer ficou `unavailable` pela última vez,<br/>formatado como uma [data](#api-date-format)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `connect_time` <br/>(PRO 1.4.0+)    | Número; tempo médio (em milissegundos)<br/>para estabelecer uma conexão com o servidor;<br/>veja a diretiva [response_time_factor (PRO)](https://pt.angie.software//angie/docs/configuration/modules/stream/stream_upstream.md#s-u-response-time-factor)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `first_byte_time` <br/>(PRO 1.4.0+) | Número; tempo médio (em milissegundos)<br/>para receber o primeiro byte da resposta do servidor;<br/>veja a diretiva [response_time_factor (PRO)](https://pt.angie.software//angie/docs/configuration/modules/stream/stream_upstream.md#s-u-response-time-factor)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `last_byte_time` <br/>(PRO 1.4.0+)  | Número; tempo médio (em milissegundos)<br/>para receber a resposta completa do servidor;<br/>veja a diretiva [response_time_factor (PRO)](https://pt.angie.software//angie/docs/configuration/modules/stream/stream_upstream.md#s-u-response-time-factor)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `backup_switch`<br/>(PRO 1.10.0+)   | Objeto; contém o estado atual da lógica de backup ativo,<br/>presente se [backup_switch (PRO)](https://pt.angie.software//angie/docs/configuration/modules/stream/stream_upstream.md#s-u-backup-switch) estiver configurado para o upstream                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `active`                            | Número; nível do grupo ativo<br/>atualmente usado para balanceamento de carga.<br/>Se o grupo ativo for o grupo primário, o valor é 0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `timeout`                           | Número; tempo de espera restante em milissegundos<br/>após o qual o balanceador de carga irá verificar novamente por nós saudáveis<br/>em grupos com níveis mais baixos, começando pelo grupo primário,<br/>enquanto grupos com níveis mais altos não são verificados;<br/>não exibido para o grupo primário (nível 0)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |

#### Versionchanged
Alterado na versão 1.4.0: PRO

No Angie PRO, se o upstream tiver sondas [upstream_probe (PRO)](https://pt.angie.software//angie/docs/configuration/modules/stream/stream_upstream_probe.md#s-u-upstream-probe) configuradas,
o objeto `health` também tem um subobjeto `probes`
que armazena os contadores de sonda de saúde do servidor,
enquanto `state`, além dos valores da tabela acima,
também pode ser `checking` e `unhealthy`:

```json
{
    "192.168.16.4:80": {
        "state": "unhealthy",
        "...": "...",
        "health": {
            "...": "...",
            "probes": {
                "count": 2,
                "fails": 2,
                "last": "|sampledateshort|T11:03:54Z"
            }
        }
    }
}
```

O valor `checking` de `state` significa que o servidor,
que tem uma sonda configurada com o parâmetro `essential`,
ainda não foi verificado;
o valor `unhealthy` significa que o servidor não está operacional.
Ambos os estados também significam que o servidor não está incluído no balanceamento de carga.
Para detalhes das sondas de saúde, veja [upstream_probe](https://pt.angie.software//angie/docs/configuration/modules/stream/stream_upstream_probe.md#s-u-upstream-probe).

Contadores em `probes`:

| `count`   | Número; número total de sondas para este servidor                                          |
|-----------|--------------------------------------------------------------------------------------------|
| `fails`   | Número; número de sondas falhadas                                                          |
| `last`    | String ou número; momento da última sonda,<br/>formatado como uma [data](#api-date-format) |

<a id="api-config"></a>

## API de Configuração Dinâmica (PRO)

A API inclui uma seção `/config` que permite atualizações dinâmicas
na configuração do Angie em formato JSON
com requisições HTTP `PUT`, `PATCH` e `DELETE`.
Todas as atualizações são atômicas: as novas configurações são aplicadas como um todo,
ou nenhuma é aplicada.
Em caso de erro, o Angie reporta o motivo.

<a id="api-config-sections"></a>

### Subseções de `/config`

Atualmente, a configuração de servidores individuais dentro de upstreams está disponível
na seção `/config` para os módulos [HTTP](#api-config-http-upstreams-servers) e [stream](#api-config-stream-upstreams-servers); o número de configurações
elegíveis para configuração dinâmica está aumentando constantemente.

<a id="api-config-http-upstreams-servers"></a>

#### `/config/http/upstreams/<upstream>/servers/<name>`

Permite configurar peers individuais de upstream,
incluindo excluir peers existentes ou adicionar novos.

Parâmetros do caminho URI:

| `<upstream>`   | Nome do upstream; para ser configurável via `/config`, deve<br/>ter uma diretiva [zone](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-zone) configurada, definindo uma zona<br/>de memória compartilhada.                                                                              |
|----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `<name>`       | O nome do peer dentro do upstream, definido como<br/>`<service>@<host>`, onde:<br/><br/>- `<service>@` é um nome de serviço opcional, usado para<br/>  resolução de registros SRV.<br/>- `<host>` é o nome de domínio do serviço (se `resolve`<br/>  estiver presente) ou seu IP; uma porta opcional pode ser definida aqui. |

Por exemplo, a seguinte configuração:

```nginx
upstream backend {
    server backend.example.com service=_http._tcp resolve;
    server 127.0.0.1;
    zone backend 1m;
}
```

Permite os seguintes nomes de peer:

```console
$ curl http://127.0.0.1/config/http/upstreams/backend/servers/_http._tcp@backend.example.com/
$ curl http://127.0.0.1/config/http/upstreams/backend/servers/127.0.0.1:80/
```

Esta subseção da API permite definir os parâmetros `weight`, `max_conns`,
`max_fails`, `fail_timeout`, `slow_start`, `backup`, `down` e
`sid`, conforme descrito em [server](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-server).

#### NOTE
Não há um parâmetro `drain` (PRO) separado aqui;
para habilitar `drain`,
defina `down` para o valor string `drain`:

```console
$ curl -X PUT -d \"drain\" \
  http://127.0.0.1/config/http/upstreams/backend/servers/backend.example.com/down
```

Exemplo:

```console
$ curl http://127.0.0.1/config/http/upstreams/backend/servers/backend.example.com?defaults=on
```

```json
{
    "weight": 1,
    "max_conns": 0,
    "max_fails": 1,
    "fail_timeout": 10,
    "slow_start": 0,
    "backup": true,
    "down": false,
    "sid": ""
}
```

Os parâmetros realmente disponíveis são limitados aos suportados pelo
método de balanceamento de carga atual do [upstream](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-upstream).
Então, se o upstream estiver configurado com o método `random`:

```nginx
upstream backend {
    zone backend 256k;
    server backend.example.com resolve max_conns=5;
    random;
}
```

Você não conseguirá adicionar um novo peer que defina `backup`:

```console
$ curl -X PUT -d '{ "backup": true }' \
    http://127.0.0.1/config/http/upstreams/backend/servers/backend1.example.com
```

```json
{
    "error": "FormatError",
    "description": "The \"backup\" field is unknown."
}
```

#### NOTE
Mesmo com um método de balanceamento de carga compatível, o parâmetro `backup`
só pode ser definido ao adicionar um novo peer.

<a id="api-config-stream-upstreams-servers"></a>

#### `/config/stream/upstreams/<upstream>/servers/<name>`

Permite configurar peers individuais de upstream,
incluindo excluir peers existentes ou adicionar novos.

Parâmetros do caminho URI:

| `<upstream>`   | Nome do bloco `upstream`;<br/>para ser configurável via `/config`,<br/>deve ter uma diretiva [zone](https://pt.angie.software//angie/docs/configuration/modules/stream/stream_upstream.md#s-u-zone) configurada,<br/>definindo uma zona de memória compartilhada.                                                            |
|----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `<name>`       | O nome do peer dentro do upstream, definido como<br/>`<service>@<host>`, onde:<br/><br/>- `<service>@` é um nome de serviço opcional, usado para<br/>  resolução de registros SRV.<br/>- `<host>` é o nome de domínio do serviço (se `resolve`<br/>  estiver presente) ou seu IP; uma porta opcional pode ser definida aqui. |

Por exemplo, a seguinte configuração:

```nginx
upstream backend {
    server backend.example.com:8080 service=_example._tcp resolve;
    server 127.0.0.1:12345;
    zone backend 1m;
}
```

Permite os seguintes nomes de peer:

```console
$ curl http://127.0.0.1/config/stream/upstreams/backend/servers/_example._tcp@backend.example.com:8080/
$ curl http://127.0.0.1/config/stream/upstreams/backend/servers/127.0.0.1:12345/
```

Esta subseção da API permite definir os parâmetros `weight`,
`max_conns`, `max_fails`, `fail_timeout`, `slow_start`, `backup` e
`down`, conforme descrito em [server](https://pt.angie.software//angie/docs/configuration/modules/stream/stream_upstream.md#s-u-server).

#### NOTE
Não há um parâmetro `drain` (PRO) separado aqui;
para habilitar o modo `drain`,
defina `down` para o valor string `drain`:

```console
$ curl -X PUT -d \"drain\" \
  http://127.0.0.1/config/stream/upstreams/backend/servers/backend.example.com/down
```

Exemplo:

```console
$ curl http://127.0.0.1/config/stream/upstreams/backend/servers/backend.example.com?defaults=on
```

```json
{
    "weight": 1,
    "max_conns": 0,
    "max_fails": 1,
    "fail_timeout": 10,
    "slow_start": 0,
    "backup": true,
    "down": false,
}
```

Os parâmetros realmente disponíveis são limitados aos suportados pelo
método de balanceamento de carga atual do [upstream](https://pt.angie.software//angie/docs/configuration/modules/stream/stream_upstream.md#s-u-upstream).
Então, se o upstream estiver configurado com o método `random`:

```nginx
upstream backend {
    zone backend 256k;
    server backend.example.com resolve max_conns=5;
    random;
}
```

Você não conseguirá adicionar um novo peer que defina `backup`:

```console
$ curl -X PUT -d '{ "backup": true }' \
    http://127.0.0.1/config/stream/upstreams/backend/servers/backend1.example.com
```

```json
{
    "error": "FormatError",
    "description": "The \"backup\" field is unknown."
}
```

#### NOTE
Mesmo com um método de balanceamento de carga compatível, o parâmetro `backup`
só pode ser definido ao adicionar um novo peer.

Ao excluir peers, você pode definir o
argumento `connection_drop=<value>` (PRO) para sobrescrever as
configurações [proxy_connection_drop](https://pt.angie.software//angie/docs/configuration/modules/stream/stream_proxy.md#s-proxy-connection-drop):

```console
$ curl -X DELETE \
    http://127.0.0.1/config/stream/upstreams/backend/servers/backend1.example.com?connection_drop=off

$ curl -X DELETE \
    http://127.0.0.1/config/stream/upstreams/backend/servers/backend2.example.com?connection_drop=on

$ curl -X DELETE \
    http://127.0.0.1/config/stream/upstreams/backend/servers/backend3.example.com?connection_drop=1000
```

<a id="api-config-methods"></a>

### Métodos HTTP

Vamos considerar a semântica de cada método HTTP aplicável a esta seção
usando a seguinte configuração upstream como exemplo:

```nginx
http {
    # ...

    upstream backend {
        zone upstream 256k;
        server backend.example.com resolve max_conns=5;
        # ...
    }

    server {
        # ...

        location /config/ {
            api /config/;

            allow 127.0.0.1;
            deny all;
        }
    }
}
```

<a id="get"></a>

#### GET

O método HTTP `GET` consulta uma entidade em qualquer caminho existente dentro de
`/config`, assim como faz para outras seções da API.

Por exemplo, o
ramo de servidor upstream `/config/http/upstreams/backend/servers/`
habilita estas consultas:

```console
$ curl http://127.0.0.1/config/http/upstreams/backend/servers/backend.example.com/max_conns
$ curl http://127.0.0.1/config/http/upstreams/backend/servers/backend.example.com
$ curl http://127.0.0.1/config/http/upstreams/backend/servers
$ # ...
$ curl http://127.0.0.1/config
```

Você pode obter valores de parâmetros padrão com o argumento `defaults=on`:

```console
$ curl http://127.0.0.1/config/http/upstreams/backend/servers?defaults=on
```

```json
{
    "backend.example.com": {
        "weight": 1,
        "max_conns": 5,
        "max_fails": 1,
        "fail_timeout": 10,
        "slow_start": 0,
        "backup": false,
        "down": false,
        "sid": ""
    }
}
```

<a id="put"></a>

#### PUT

O método HTTP `PUT` cria uma nova entidade JSON no caminho especificado
ou substitui *inteiramente* uma existente.

Por exemplo, para adicionar o parâmetro `max_fails`, não especificado anteriormente,
ao servidor `backend.example.com` dentro do upstream `backend`:

```console
$ curl -X PUT -d '2' \
    http://127.0.0.1/config/http/upstreams/backend/servers/backend.example.com/max_fails
```

```json
{
    "success": "Updated",
    "description": "Existing configuration API entity \"/config/http/upstreams/backend/servers/backend.example.com/max_fails\" was updated with replacing."
}
```

Verifique as alterações:

```console
$ curl http://127.0.0.1/config/http/upstreams/backend/servers/backend.example.com
```

```json
{
    "max_conns": 5,
    "max_fails": 2
}
```

<a id="delete"></a>

#### DELETE

O método HTTP `DELETE` exclui configurações *previamente definidas* no caminho especificado;
ao fazer isso, restaura os valores padrão se houver algum.

Por exemplo, para excluir o parâmetro `max_fails` previamente modificado
do servidor `backend.example.com` dentro do upstream `backend`:

```console
$ curl -X DELETE \
    http://127.0.0.1/config/http/upstreams/backend/servers/backend.example.com/max_fails
```

```console
{
    "success": "Reset",
    "description": "Configuration API entity \"/config/http/upstreams/backend/servers/backend.example.com/max_fails\" was reset to default."
}
```

Verifique as alterações usando o argumento `defaults=on`:

```console
$ curl http://127.0.0.1/config/http/upstreams/backend/servers/backend.example.com?defaults=on
```

```json
{
    "weight": 1,
    "max_conns": 5,
    "max_fails": 1,
    "fail_timeout": 10,
    "slow_start": 0,
    "backup": false,
    "down": false,
    "sid": ""
}
```

O parâmetro `max_fails` retornou ao seu valor padrão.

Ao excluir servidores, você pode definir o argumento `connection_drop=<value>`
(PRO) para sobrescrever as configurações [proxy_connection_drop](https://pt.angie.software//angie/docs/configuration/modules/http/http_proxy.md#proxy-connection-drop), [grpc_connection_drop](https://pt.angie.software//angie/docs/configuration/modules/http/http_grpc.md#grpc-connection-drop),
[fastcgi_connection_drop](https://pt.angie.software//angie/docs/configuration/modules/http/http_fastcgi.md#fastcgi-connection-drop), [scgi_connection_drop](https://pt.angie.software//angie/docs/configuration/modules/http/http_scgi.md#scgi-connection-drop) e
[uwsgi_connection_drop](https://pt.angie.software//angie/docs/configuration/modules/http/http_uwsgi.md#uwsgi-connection-drop):

```console
$ curl -X DELETE \
    http://127.0.0.1/config/http/upstreams/backend/servers/backend1.example.com?connection_drop=off

$ curl -X DELETE \
    http://127.0.0.1/config/http/upstreams/backend/servers/backend2.example.com?connection_drop=on

$ curl -X DELETE \
    http://127.0.0.1/config/http/upstreams/backend/servers/backend3.example.com?connection_drop=1000
```

<a id="patch"></a>

#### PATCH

O método HTTP `PATCH` cria uma nova entidade no caminho especificado
ou substitui parcialmente ou complementa uma existente
([RFC 7386](https://datatracker.ietf.org/doc/html/rfc7396))
fornecendo uma definição JSON em seu payload.

O método opera da seguinte forma: se as entidades da nova definição
existem na configuração, elas são sobrescritas; caso contrário, são adicionadas.

Por exemplo, para alterar o parâmetro `down` do
servidor `backend.example.com` dentro do upstream `backend`,
deixando o resto intacto:

```console
$ curl -X PATCH -d '{ "down": true }' \
    http://127.0.0.1/config/http/upstreams/backend/servers/backend.example.com
```

```json
{
    "success": "Updated",
    "description": "Existing configuration API entity \"/config/http/upstreams/backend/servers/backend.example.com\" was updated with merging."
}
```

Verifique as alterações:

```console
$ curl http://127.0.0.1/config/http/upstreams/backend/servers/backend.example.com
```

```json
{
    "max_conns": 5,
    "down": true
}
```

Observe que o objeto JSON fornecido com a requisição `PATCH` *foi mesclado* com o
existente em vez de substituí-lo inteiramente, como seria o caso com `PUT`.

Os valores `null` são um caso especial; eles são usados para excluir
itens específicos de configuração durante tal mesclagem.

#### NOTE
Esta exclusão é idêntica ao `DELETE`;
em particular, ela restaura os valores padrão.

Por exemplo, para excluir o parâmetro `down` adicionado anteriormente
e simultaneamente atualizar `max_conns`:

```console
$ curl -X PATCH -d '{ "down": null, "max_conns": 6 }' \
    http://127.0.0.1/config/http/upstreams/backend/servers/backend.example.com
```

```json
{
    "success": "Updated",
    "description": "Existing configuration API entity \"/config/http/upstreams/backend/servers/backend.example.com\" was updated with merging."
}
```

Verifique as alterações:

```console
$ curl http://127.0.0.1/config/http/upstreams/backend/servers/backend.example.com
```

```json
{
    "max_conns": 6
}
```

O parâmetro `down`, para o qual um valor `null` foi fornecido, foi excluído;
o valor de `max_conns` foi atualizado.
