<!-- review: finished -->

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

# Proxy

Permite passar requisições para outro servidor (com proxy).

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

## Exemplo de Configuração

```nginx
location / {
    proxy_pass       http://localhost:8000;
    proxy_set_header Host      $host;
    proxy_set_header X-Real-IP $remote_addr;

    proxy_cache       cache_zone;
    proxy_cache_valid 200 302 10m;
    proxy_cache_valid 404      1m;
}
```

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

## Diretivas

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

<a id="proxy-bind"></a>

### proxy_bind

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_bind` address [`transparent`] | `off`;   |
|-------------------------------------------------------------------------------------------|-------------------------------------------------|
| Padrão                                                                                    | —                                               |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                          |

Faz com que conexões de saída para um servidor com proxy se originem do endereço IP local especificado com uma porta opcional. O valor do parâmetro pode conter variáveis. O valor especial `off` cancela o efeito da diretiva proxy_bind herdada do nível de configuração anterior, o que permite ao sistema atribuir automaticamente o endereço IP local e a porta.

O parâmetro `transparent` permite que conexões de saída para um servidor com proxy se originem de um endereço IP não-local, por exemplo, de um endereço IP real de um cliente:

```nginx
proxy_bind $remote_addr transparent;
```

Para que este parâmetro funcione, geralmente é necessário executar os processos worker do Angie com privilégios de [superusuário](https://pt.angie.software//angie/docs/configuration/modules/core.md#user). No Linux isso não é necessário, pois se o parâmetro `transparent` for especificado, os processos worker herdam a capacidade CAP_NET_RAW do processo mestre.

#### NOTE
É necessário configurar a tabela de roteamento do kernel para interceptar o tráfego de rede do servidor com proxy.

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

<a id="proxy-buffer-size"></a>

### proxy_buffer_size

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_buffer_size` size;   |
|-------------------------------------------------------------------------------------------|-----------------------------|
| Padrão                                                                                    | `proxy_buffer_size 4k|8k;`  |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location      |

Define o tamanho do buffer usado para ler a primeira parte da resposta recebida do servidor com proxy. Esta parte geralmente contém um pequeno cabeçalho de resposta. Por padrão, o tamanho do buffer é igual a uma página de memória. Isso é 4K ou 8K, dependendo da plataforma. Pode ser feito menor, no entanto.

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

<a id="proxy-buffering"></a>

### proxy_buffering

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

Habilita ou desabilita o buffering de respostas do servidor com proxy.

| `on`   | O Angie recebe uma resposta do servidor com proxy o mais rápido possível, salvando-a nos buffers definidos pelas diretivas [proxy_buffer_size](#proxy-buffer-size) e [proxy_buffers](#proxy-buffers). O envio ao cliente é realizado em paralelo: buffers preenchidos são passados para envio (não são retidos), mas seu tamanho total é limitado por [proxy_busy_buffers_size](#proxy-busy-buffers-size). Se um buffer não estiver totalmente preenchido, ele não é enviado, a menos que contenha os últimos dados da resposta. Portanto, o modo de leitura com buffering não é adequado quando se precisa da entrega imediata de cada poucos bytes. Se toda a resposta não couber na memória, uma parte dela pode ser salva em um [arquivo temporário](#proxy-temp-path) no disco. A escrita em arquivos temporários é controlada pelas diretivas [proxy_max_temp_file_size](#proxy-max-temp-file-size) e [proxy_temp_file_write_size](#proxy-temp-file-write-size).   |
|--------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `off`  | A resposta é passada para o cliente imediatamente conforme é recebida. O Angie trabalha em um ciclo "leu — enviou" e não espera o buffer encher completamente: por exemplo, 10 bytes lidos de um buffer de 4K são enviados imediatamente. Ao mesmo tempo, se a resposta inteira couber no buffer, o Angie pode lê-la por completo. O tamanho máximo dos dados que o Angie pode receber do servidor de uma vez é definido pela diretiva [proxy_buffer_size](#proxy-buffer-size). Com `off`, o Angie não faz cache de respostas e [proxy_limit_rate](#proxy-limit-rate) não funciona.                                                                                                                                                                                                                                                                                                                                                                                      |

O buffering também pode ser habilitado ou desabilitado passando "yes" ou "no" no campo de cabeçalho de resposta `X-Accel-Buffering`. Esta capacidade pode ser desabilitada usando a diretiva [proxy_ignore_headers](#proxy-ignore-headers).

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

<a id="proxy-buffers"></a>

### proxy_buffers

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_buffers` number size;   |
|-------------------------------------------------------------------------------------------|--------------------------------|
| Padrão                                                                                    | `proxy_buffers 8 4k|8k;`       |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location         |

Define o número e tamanho dos buffers usados para ler uma resposta do servidor com proxy, para uma única conexão.

Por padrão, o tamanho do buffer é igual a uma página de memória. Isso é 4K ou 8K, dependendo da plataforma.

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

<a id="proxy-busy-buffers-size"></a>

### proxy_busy_buffers_size

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_busy_buffers_size` size;   |
|-------------------------------------------------------------------------------------------|-----------------------------------|
| Padrão                                                                                    | `proxy_busy_buffers_size 8k|16k;` |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location            |

Quando o [buffering](#proxy-buffering) de respostas do servidor com proxy está habilitado, limita o tamanho total dos buffers que podem estar ocupados enviando uma resposta para o cliente enquanto a resposta ainda não foi totalmente lida. Enquanto isso, o resto dos buffers pode ser usado para ler a resposta e, se necessário, fazer buffer de parte da resposta em um arquivo temporário.

Por padrão, o tamanho é limitado pelo tamanho de dois buffers definidos pelas diretivas [proxy_buffer_size](#proxy-buffer-size) e [proxy_buffers](#proxy-buffers).

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

<a id="proxy-cache"></a>

### proxy_cache

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_cache` zone | `off` [`path=`path];   |
|-------------------------------------------------------------------------------------------|---------------------------------------------|
| Padrão                                                                                    | `proxy_cache off;`                          |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                      |

Define uma zona de memória compartilhada usada para cache.
A mesma zona pode ser usada em vários lugares.
O valor do parâmetro pode conter variáveis.

| `off`   | desabilita o cache herdado do nível de configuração anterior.   |
|---------|-----------------------------------------------------------------|

No Angie PRO, você pode especificar múltiplas diretivas [proxy_cache_path](#proxy-cache-path) que
usam o mesmo valor `keys_zone` para habilitar fragmentação de cache. Ao fazer isso,
você deve definir o parâmetro `path` da diretiva [proxy_cache](#proxy-cache)
que usa este valor `keys_zone`:

| `path=`path   | O valor é avaliado no momento de *fazer cache* da resposta do backend<br/>e espera-se que use variáveis, incluindo aquelas contendo<br/>informações da resposta.<br/><br/>Se a resposta for retirada do cache, o path não é reavaliado;<br/>assim, uma resposta em cache mantém seu path original<br/>até ser removida do cache.   |
|---------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|

Isso permite selecionar o caminho de cache necessário aplicando diretivas [map](https://pt.angie.software//angie/docs/configuration/modules/http/http_map.md#id1) ou
scripts às respostas do backend. Exemplo para `Content-Type`:

```nginx
proxy_cache_path /cache/one keys_zone=zone:10m;
proxy_cache_path /cache/two keys_zone=zone;

map $upstream_http_content_type $cache {
   ~^text/  one;
   default  two;
}

server {
   ...
   location / {
       proxy_pass http://backend;
       proxy_cache zone path=/cache/$cache;
       proxy_cache_valid 200 10m;
   }
}
```

Aqui há dois caminhos de cache e um mapeamento de variável para distinguir entre eles.
Se `Content-Type` começar com `text/`, o primeiro caminho será escolhido,
caso contrário o segundo.

#### NOTE
Ao usar [proxy_cache](#proxy-cache),
você normalmente precisa também definir a diretiva [proxy_cache_valid](#proxy-cache-valid)
para especificar explicitamente o tempo de cache para respostas.
Se não for definida, o Angie não usa valores padrão
mas determina o tempo de cache da resposta
baseado nos cabeçalhos de resposta HTTP do servidor na seguinte ordem de prioridade:

1. O cabeçalho `X-Accel-Expires` (maior prioridade).
2. O cabeçalho `Cache-Control`
   com parâmetros `max-age` ou `s-maxage`.
3. O cabeçalho `Expires`.

Se nenhum desses cabeçalhos contiver valores válidos ou não estiver presente,
a resposta não será armazenada em cache porque seu tempo de expiração não pode ser determinado.

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

<a id="proxy-cache-background-update"></a>

### proxy_cache_background_update

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

Permite iniciar uma sub-requisição em segundo plano para atualizar um item de cache expirado, enquanto uma resposta em cache obsoleta é retornada ao cliente.

#### WARNING
O uso de uma resposta em cache obsoleta enquanto está sendo atualizada deve ser [permitido](#proxy-cache-use-stale-updating).

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

<a id="proxy-cache-bypass"></a>

### proxy_cache_bypass

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

Define condições sob as quais a resposta não será retirada do cache. Se pelo menos um valor dos parâmetros de string não estiver vazio e não for igual a "0", então a resposta não será retirada do cache:

```nginx
proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
proxy_cache_bypass $http_pragma    $http_authorization;
```

Pode ser usada junto com a diretiva [proxy_no_cache](#proxy-no-cache).

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

<a id="proxy-cache-convert-head"></a>

### proxy_cache_convert_head

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

Habilita ou desabilita a conversão do método "HEAD" para "GET" para cache. Se a conversão estiver desabilitada, a [chave de cache](#proxy-cache-key) deve incluir o [$request_method](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#v-request-method).

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

<a id="proxy-cache-key"></a>

### proxy_cache_key

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_cache_key` string;                         |
|-------------------------------------------------------------------------------------------|---------------------------------------------------|
| Padrão                                                                                    | `proxy_cache_key $scheme$proxy_host$request_uri;` |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                            |

Define uma chave para cache, por exemplo,

```nginx
proxy_cache_key "$host$request_uri $cookie_user";
```

Por padrão, o valor da diretiva é próximo à string

```nginx
proxy_cache_key $scheme$proxy_host$uri$is_args$args;
```

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

<a id="proxy-cache-lock"></a>

### proxy_cache_lock

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

Quando habilitado, apenas uma requisição por vez será permitida para popular um novo elemento de cache identificado de acordo com a diretiva [proxy_cache_key](#proxy-cache-key) passando uma requisição para o servidor com proxy. Outras requisições para o mesmo elemento de cache irão aguardar uma resposta aparecer no cache ou para o bloqueio de cache para este elemento ser liberado, até o tempo definido pela diretiva [proxy_cache_lock_timeout](#proxy-cache-lock-timeout).

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

<a id="proxy-cache-lock-age"></a>

### proxy_cache_lock_age

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_cache_lock_age` time;   |
|-------------------------------------------------------------------------------------------|--------------------------------|
| Padrão                                                                                    | `proxy_cache_lock_age 5s;`     |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location         |

Se a última requisição passada para o servidor com proxy para popular um novo elemento de cache não foi completada pelo tempo especificado, mais uma requisição pode ser passada para o servidor com proxy.

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

<a id="proxy-cache-lock-timeout"></a>

### proxy_cache_lock_timeout

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_cache_lock_timeout` time;   |
|-------------------------------------------------------------------------------------------|------------------------------------|
| Padrão                                                                                    | `proxy_cache_lock_timeout 5s;`     |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location             |

Define um timeout para [proxy_cache_lock](#proxy-cache-lock). Quando o tempo expira, a requisição será passada para o servidor com proxy, porém, a resposta não será armazenada em cache.

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

<a id="proxy-cache-max-range-offset"></a>

### proxy_cache_max_range_offset

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_cache_max_range_offset` number;   |
|-------------------------------------------------------------------------------------------|------------------------------------------|
| Padrão                                                                                    | —                                        |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                   |

Define um deslocamento em bytes para requisições de intervalo de bytes. Se o intervalo estiver além do deslocamento especificado, a requisição de intervalo será passada para o servidor com proxy e a resposta não será armazenada em cache.

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

<a id="proxy-cache-methods"></a>

### proxy_cache_methods

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_cache_methods` `GET` | `HEAD` | `POST` ...;   |
|-------------------------------------------------------------------------------------------|------------------------------------------------------|
| Padrão                                                                                    | `proxy_cache_methods GET HEAD;`                      |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                               |

Se o método de requisição do cliente estiver listado nesta diretiva, então a resposta será armazenada em cache. Os métodos "GET" e "HEAD" são sempre adicionados à lista, mas é recomendado especificá-los explicitamente. Veja também a diretiva [proxy_no_cache](#proxy-no-cache).

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

<a id="proxy-cache-min-uses"></a>

### proxy_cache_min_uses

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_cache_min_uses` number;   |
|-------------------------------------------------------------------------------------------|----------------------------------|
| Padrão                                                                                    | `proxy_cache_min_uses 1;`        |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location           |

Define o número de requisições após as quais a resposta será armazenada em cache.

#### WARNING
Metadados de cache são armazenados em memória compartilhada. Deletar arquivos de cache manualmente não
reseta os contadores e pode levar a comportamento imprevisível. Para um reset completo,
pare o servidor, delete o diretório de cache e inicie novamente.

#### NOTE
Módulos de limpeza de cache de terceiros (por exemplo, [Cache Purge](https://pt.angie.software//angie/docs/installation/external-modules/cache-purge.md#external-cache-purge)) apenas deletam
arquivos mas não resetam o contador proxy_cache_min_uses. A diretiva
é destinada a proteger o cache de poluição por requisições infrequentes, e resetar
o contador na limpeza pode afetar negativamente o desempenho.

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

<a id="proxy-cache-path"></a>

### proxy_cache_path

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_cache_path` path [`levels=`levels] [`use_temp_path=``on` | `off`] `keys_zone=`name:size[:`file=`file] [`inactive=`time] [`max_size=`size] [`min_free=`size] [`manager_files=`number] [`manager_sleep=`time] [`manager_threshold=`time] [`loader_files=`number] [`loader_sleep=`time] [`loader_threshold=`time];   |
|-------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Padrão                                                                                    | —                                                                                                                                                                                                                                                                                                                        |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http                                                                                                                                                                                                                                                                                                                     |

Define o path e outros parâmetros de um cache. Os dados de cache são armazenados em arquivos. O nome do arquivo em um cache é resultado da aplicação da função MD5 à [chave de cache](#proxy-cache-key).

| `levels`   | define níveis de hierarquia de um cache: de 1 a 3, cada nível aceita valores 1 ou 2.   |
|------------|----------------------------------------------------------------------------------------|

Por exemplo, na seguinte configuração:

```nginx
proxy_cache_path /data/angie/cache levels=1:2 keys_zone=one:10m;
```

nomes de arquivo em um cache ficarão assim:

```nginx
/data/angie/cache/c/29/b7f54b2df7773722d382f4809d65029c
```

Uma resposta em cache é primeiro escrita em um arquivo temporário, e então o arquivo é renomeado. Arquivos temporários e o cache podem ser colocados em sistemas de arquivos diferentes. Porém, esteja ciente de que neste caso um arquivo é copiado entre dois sistemas de arquivos ao invés da operação barata de renomeação. É assim recomendado que para qualquer localização dada tanto o cache quanto um diretório contendo arquivos temporários sejam colocados no mesmo sistema de arquivos.

| `use_temp_path=on` | `off`   | determina o diretório a ser usado para arquivos temporários                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `on`                         | Se o parâmetro não for especificado ou definido como `on`, o diretório especificado pela diretiva [proxy_temp_path](#proxy-temp-path) para a location dada será usado                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `off`                        | arquivos temporários serão colocados diretamente no diretório de cache                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `keys_zone`                  | Define o nome e tamanho da zona de memória compartilhada para armazenar todas as chaves ativas e informações sobre dados. Metadados de cache são armazenados em memória compartilhada.<br/><br/>Uma zona de 1 megabyte é suficiente para armazenar cerca de 8000 chaves.<br/><br/>Quando um file opcional é especificado com `keys_zone`,<br/>o Angie descarrega o conteúdo desta zona para o disco<br/>quando o processo principal termina<br/>e tenta restaurá-la no mesmo endereço de memória<br/>na próxima [inicialização](https://pt.angie.software//angie/docs/configuration/runtime.md#runtime)<br/>ou após [atualização binária](https://pt.angie.software//angie/docs/configuration/runtime.md#service-upgrade),<br/>para garantir persistência de dados mais confiável<br/>e reduzir o tempo de carregamento do cache.<br/><br/>Se a zona não puder ser restaurada devido a uma mudança em seu tamanho,<br/>incompatibilidade de versão binária, ou outras razões,<br/>o Angie registrará um aviso (`failed to restore zone at address`)<br/>e não usará o mecanismo de restauração de zona.<br/>Em vez disso, o arquivo incompatível será renomeado para `.old`;<br/>você pode deletá-lo,<br/>ou restaurar seu nome e reverter o Angie para a configuração e versão<br/>na qual este arquivo foi originalmente criado.<br/><br/>#### WARNING<br/>Certifique-se de que o caminho para o file está especificado corretamente<br/>e tem as permissões de acesso necessárias para o Angie usar,<br/>e está protegido de acesso não autorizado;<br/>caminhos relativos são baseados no [prefix](https://pt.angie.software//angie/docs/installation/sourcebuild.md#paths). |
| `inactive`                   | Se dados de cache não forem acessados dentro do tempo especificado por este parâmetro, os dados são removidos, independentemente de sua atualidade.<br/><br/>Por padrão, `inactive` é 10 minutos.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |

#### NOTE
#### Versionadded
Adicionado na versão 1.2.0: PRO

No Angie PRO, múltiplas diretivas proxy_cache_path podem ser especificadas com o mesmo valor `keys_zone`. O tamanho da zona de memória compartilhada só pode ser especificado na primeira. A seleção entre diretivas será feita com base no parâmetro `path` da diretiva [proxy_cache](#proxy-cache) correspondente.

Um processo especial **gerenciador de cache** monitora o tamanho máximo do cache e a quantidade mínima de espaço livre no sistema de arquivos com o cache, e remove os dados menos recentemente usados quando o tamanho máximo do cache é excedido ou quando não há espaço livre suficiente. A remoção de dados ocorre em iterações.

| `max_size`          | valor limite máximo para o tamanho do cache                                                   |
|---------------------|-----------------------------------------------------------------------------------------------|
| `min_free`          | valor limite mínimo para espaço livre no sistema de arquivos com o cache                      |
| `manager_files`     | número máximo de itens de cache a serem removidos em uma iteração<br/><br/>Por padrão: `100`. |
| `manager_threshold` | limita a duração de uma iteração<br/><br/>Por padrão: `200` milissegundos.                    |
| `manager_sleep`     | configura uma pausa entre iterações<br/><br/>Por padrão: `50` milissegundos.                  |

Um minuto após o Angie iniciar, um processo especial **carregador de cache** é ativado.
Ele examina o sistema de arquivos em busca de dados previamente armazenados em cache
e carrega essas informações na zona de cache.
Este processo funciona iterativamente;
cada iteração processa um número limitado de itens especificado pelo parâmetro `loader_files`,
garante que não exceda `loader_threshold`,
então faz uma pausa curta definida por `loader_sleep`
antes de passar para o próximo lote.
As iterações continuam
até que o carregador tenha processado todas as entradas de cache existentes no disco:

| `loader_files`     | número máximo de itens de cache a carregar em uma iteração<br/><br/>Por padrão: `100`   |
|--------------------|-----------------------------------------------------------------------------------------|
| `loader_threshold` | limita a duração de uma iteração<br/><br/>Por padrão: `200` milissegundos               |
| `loader_sleep`     | configura uma pausa entre iterações<br/><br/>Por padrão: `50` milissegundos             |

#### NOTE
Especificar o file para o parâmetro `keys_zone`
não afeta a operação do carregador de cache.

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

<a id="proxy-cache-revalidate"></a>

### proxy_cache_revalidate

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

Habilita a revalidação de itens de cache expirados usando requisições condicionais com os campos de cabeçalho `If-Modified-Since` e `If-None-Match`.

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

<a id="proxy-cache-use-stale"></a>

### proxy_cache_use_stale

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_cache_use_stale` `error` | `timeout` | `invalid_header` | `updating` | `http_500` | `http_502` | `http_503` | `http_504` | `http_403` | `http_404` | `http_429` | `off` ...;   |
|-------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Padrão                                                                                    | `proxy_cache_use_stale off;`                                                                                                                                                          |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                                                                                                                                                                |

Determina em quais casos uma resposta de cache obsoleta pode ser usada. Os parâmetros da diretiva correspondem aos da diretiva [proxy_next_upstream](#proxy-next-upstream).

| `error`    | permite usar uma resposta de cache obsoleta se um servidor proxy para processar uma requisição não puder ser selecionado.                                                                                 |
|------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `updating` | parâmetro adicional, permite usar uma resposta de cache obsoleta se ela estiver sendo atualizada no momento. Isso permite minimizar o número de acessos aos servidores proxy ao atualizar dados em cache. |

Usar uma resposta de cache obsoleta também pode ser habilitado diretamente no cabeçalho da resposta por um número especificado de segundos após a resposta ter se tornado obsoleta:

* A extensão [stale-while-revalidate](https://datatracker.ietf.org/doc/html/rfc5861#section-3) do campo de cabeçalho `Cache-Control` permite usar uma resposta de cache obsoleta se ela estiver sendo atualizada no momento.
* A extensão [stale-if-error](https://datatracker.ietf.org/doc/html/rfc5861#section-4) do campo de cabeçalho `Cache-Control` permite usar uma resposta de cache obsoleta em caso de erro.

#### NOTE
Isso tem prioridade menor que usar os parâmetros da diretiva.

Para minimizar o número de acessos aos servidores proxy ao popular um novo elemento de cache, a diretiva [proxy_cache_lock](#proxy-cache-lock) pode ser usada.

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

<a id="proxy-cache-valid"></a>

### proxy_cache_valid

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_cache_valid` [code ...] time;   |
|-------------------------------------------------------------------------------------------|----------------------------------------|
| Padrão                                                                                    | —                                      |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                 |

Define o tempo de cache para diferentes códigos de resposta. Por exemplo, as diretivas

```nginx
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404      1m;
```

definem 10 minutos de cache para respostas com códigos 200 e 302 e 1 minuto para respostas com código 404.

Se apenas o tempo de cache for especificado,

```nginx
proxy_cache_valid 5m;
```

então apenas respostas 200, 301 e 302 são armazenadas em cache.

Além disso, o parâmetro `any` pode ser especificado para armazenar em cache qualquer resposta:

```nginx
proxy_cache_valid 200 302 10m;
proxy_cache_valid 301      1h;
proxy_cache_valid any      1m;
```

#### NOTE
Parâmetros de cache também podem ser definidos diretamente no cabeçalho da resposta. Isso tem prioridade maior que a definição do tempo de cache usando a diretiva.

* O campo de cabeçalho `X-Accel-Expires` define o tempo de cache de uma resposta em segundos. O valor zero desabilita o cache para uma resposta. Se o valor começar com o prefixo `@`, ele define um tempo absoluto em segundos desde a Época, até o qual a resposta pode ser armazenada em cache.
* Se o cabeçalho não incluir o campo `X-Accel-Expires`, parâmetros de cache podem ser definidos nos campos de cabeçalho `Expires` ou `Cache-Control`.
* Se o cabeçalho incluir o campo `Set-Cookie`, tal resposta não será armazenada em cache.
* Se o cabeçalho incluir o campo `Vary` com o valor especial "`*`", tal resposta não será armazenada em cache. Se o cabeçalho incluir o campo `Vary` com outro valor, tal resposta será armazenada em cache levando em conta os campos de cabeçalho de requisição correspondentes.

O processamento de um ou mais desses campos de cabeçalho de resposta pode ser desabilitado usando a diretiva [proxy_ignore_headers](#proxy-ignore-headers).

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

<a id="proxy-connect-timeout"></a>

### proxy_connect_timeout

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_connect_timeout` time;   |
|-------------------------------------------------------------------------------------------|---------------------------------|
| Padrão                                                                                    | `proxy_connect_timeout 60s;`    |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location          |

Define um timeout para estabelecer uma conexão com um servidor proxy. Deve-se notar que este timeout geralmente não pode exceder 75 segundos.

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

<a id="proxy-connection-drop"></a>

### proxy_connection_drop

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

Habilita o encerramento de todas as conexões com o servidor proxy após ele ter sido
removido do grupo ou marcado como permanentemente indisponível por um processo de [reresolve](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#reresolve)
ou pelo [comando da API](https://pt.angie.software//angie/docs/configuration/modules/http/http_api.md#api-config-methods) `DELETE`.

Uma conexão é encerrada quando o próximo evento de leitura ou escrita é processado para
o cliente ou o servidor proxy.

Definir time habilita um [timeout](https://pt.angie.software//angie/docs/configuration/configfile.md#syntax) de encerramento de conexão;
com `on` definido, as conexões são descartadas imediatamente.

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

<a id="proxy-cookie-domain"></a>

### proxy_cookie_domain

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_cookie_domain` `off`;<br/><br/>`proxy_cookie_domain` domain replacement;   |
|-------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|
| Padrão                                                                                    | `proxy_cookie_domain off;`                                                        |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                                                            |

Define um texto que deve ser alterado no atributo domain dos campos de cabeçalho `Set-Cookie` de uma resposta do servidor proxied. Suponha que um servidor proxied retornou o campo de cabeçalho `Set-Cookie` com o atributo "domain=localhost". A diretiva

```nginx
proxy_cookie_domain localhost example.org;
```

reescreverá este atributo para "domain=example.org".

O ponto inicial nas strings domain e replacement, bem como no atributo domain, é ignorado. O valor não diferencia maiúsculas de minúsculas.

As strings domain e replacement podem conter variáveis:

```nginx
proxy_cookie_domain www.$host $host;
```

A diretiva também pode ser especificada usando expressões regulares. Neste caso, domain deve começar com o símbolo "~". A expressão regular pode conter capturas nomeadas e posicionais, e replacement pode referenciá-las:

```nginx
proxy_cookie_domain ~\.(?P<sl_domain>[-0-9a-z]+\.[a-z]+)$ $sl_domain;
```

Múltiplas diretivas proxy_cookie_domain podem ser especificadas no mesmo nível:

```nginx
proxy_cookie_domain localhost example.org;
proxy_cookie_domain ~\.([a-z]+\.[a-z]+)$ $1;
```

Se várias diretivas puderem ser aplicadas ao cookie, a primeira será escolhida.

O parâmetro `off` cancela o efeito das diretivas proxy_cookie_domain herdadas do nível de configuração anterior.

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

<a id="proxy-cookie-flags"></a>

### proxy_cookie_flags

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_cookie_flags` `off` | cookie [flag ...];   |
|-------------------------------------------------------------------------------------------|---------------------------------------------------|
| Padrão                                                                                    | `proxy_cookie_flags off;`                         |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                            |

Define uma ou mais flags para o cookie. O cookie pode conter texto, variáveis e suas combinações. A flag pode conter texto, variáveis e suas combinações.

Os parâmetros `secure`, `httponly`, `samesite=strict`,
`samesite=lax`, `samesite=none` adicionam as flags
correspondentes.

Os parâmetros `nosecure`, `nohttponly`, `nosamesite` removem
as flags correspondentes.

O cookie também pode ser especificado usando expressões regulares. Neste caso, o cookie deve começar com o símbolo "~".

Várias diretivas `proxy_cookie_flags` podem ser especificadas no mesmo
nível de configuração:

```nginx
proxy_cookie_flags one httponly;
proxy_cookie_flags ~ nosecure samesite=strict;
```

Se várias diretivas puderem ser aplicadas ao cookie, a primeira diretiva correspondente será escolhida. No exemplo, a flag `httponly` é adicionada ao cookie `one`, para todos os outros cookies a flag `samesite=strict` é adicionada e a flag `secure` é removida.

O parâmetro `off` cancela o efeito das diretivas proxy_cookie_flags herdadas do nível de configuração anterior.

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

<a id="proxy-cookie-path"></a>

### proxy_cookie_path

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_cookie_path` `off`;<br/><br/>`proxy_cookie_path` path replacement;   |
|-------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------|
| Padrão                                                                                    | `proxy_cookie_path off;`                                                    |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                                                      |

Define um texto que deve ser alterado no atributo path dos campos de cabeçalho
`Set-Cookie` de uma resposta do servidor proxy. Suponha que um servidor
proxy retornou o campo de cabeçalho `Set-Cookie` com o atributo
"path=/two/some/uri/". A diretiva

```nginx
proxy_cookie_path /two/ /;
```

reescreverá este atributo para "path=/some/uri/".

As strings path e replacement podem conter variáveis:

```nginx
proxy_cookie_path $uri /some$uri;
```

A diretiva também pode ser especificada usando expressões regulares. Neste caso,
path deve começar com o símbolo "~" para correspondência sensível a maiúsculas e minúsculas, ou
com os símbolos "~\*" para correspondência insensível a maiúsculas e minúsculas. A expressão regular pode
conter capturas nomeadas e posicionais, e replacement pode referenciá-las:

```nginx
proxy_cookie_path ~*^/user/([^/]+) /u/$1;
```

Várias diretivas proxy_cookie_path podem ser especificadas no mesmo nível:

```nginx
proxy_cookie_path /one/ /;
proxy_cookie_path / /two/;
```

Se várias diretivas puderem ser aplicadas ao cookie, a primeira diretiva correspondente será escolhida.

O parâmetro `off` cancela o efeito das diretivas proxy_cookie_path herdadas do nível de configuração anterior.

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

<a id="proxy-force-ranges"></a>

### proxy_force_ranges

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

Habilita o suporte a byte-range tanto para respostas em cache quanto não em cache do servidor proxy, independentemente do campo `Accept-Ranges` nessas respostas.

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

<a id="proxy-headers-hash-bucket-size"></a>

### proxy_headers_hash_bucket_size

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_headers_hash_bucket_size` size;   |
|-------------------------------------------------------------------------------------------|------------------------------------------|
| Padrão                                                                                    | `proxy_headers_hash_bucket_size 64;`     |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                   |

Define o tamanho do bucket para tabelas hash usadas pelas diretivas [proxy_hide_header](#proxy-hide-header) e [proxy_set_header](#proxy-set-header). Os detalhes da configuração de tabelas hash são fornecidos [separadamente](https://pt.angie.software//angie/docs/configuration/configfile.md#configure-hashes).

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

<a id="proxy-headers-hash-max-size"></a>

### proxy_headers_hash_max_size

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_headers_hash_max_size` size;   |
|-------------------------------------------------------------------------------------------|---------------------------------------|
| Padrão                                                                                    | `proxy_headers_hash_max_size 512;`    |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                |

Define o tamanho máximo das tabelas hash usadas pelas diretivas [proxy_hide_header](#proxy-hide-header) e [proxy_set_header](#proxy-set-header). Os detalhes da configuração de tabelas hash são fornecidos [separadamente](https://pt.angie.software//angie/docs/configuration/configfile.md#configure-hashes).

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

<a id="proxy-hide-header"></a>

### proxy_hide_header

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_hide_header` field;   |
|-------------------------------------------------------------------------------------------|------------------------------|
| Padrão                                                                                    | —                            |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location       |

Por padrão, o Angie não passa os campos de cabeçalho `Date`, `Server`, `X-Pad` e `X-Accel-...` da resposta de um servidor proxy para um cliente. A diretiva proxy_hide_header define campos adicionais que não serão passados. Se, ao contrário, a passagem de campos precisar ser permitida, a diretiva [proxy_pass_header](#proxy-pass-header) pode ser usada.

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

<a id="proxy-http-version"></a>

### proxy_http_version

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_http_version` `1.0` | `1.1` | `3`;            |
|-------------------------------------------------------------------------------------------|------------------------------------------------------|
| Padrão                                                                                    | `proxy_http_version 1.0;`                            |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location, if in location, limit_except |

Define a versão do protocolo HTTP para proxy.
Por padrão, a versão 1.0 é usada.
A versão 1.1 ou superior
é recomendada para uso com
[conexões keepalive](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-keepalive).

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

<a id="proxy-http3-hq"></a>

### proxy_http3_hq

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

Alterna o modo especial de negociação `hq-interop`,
que é usado para
[testes de interoperabilidade](https://github.com/marten-seemann/quic-interop-runner)
[QUIC](#proxy-http-version)
nos quais o Angie se baseia.

#### WARNING
Habilite este modo apenas para executar testes especializados que explicitamente o exigem.

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

<a id="proxy-http3-max-concurrent-streams"></a>

### proxy_http3_max_concurrent_streams

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_http3_max_concurrent_streams` number;   |
|-------------------------------------------------------------------------------------------|------------------------------------------------|
| Padrão                                                                                    | `proxy_http3_max_concurrent_streams 128;`      |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server                                   |

Inicializa as configurações HTTP/3 e QUIC
e define o número máximo de streams de requisição HTTP/3 concorrentes em uma
[conexão](#proxy-http-version).
Requer habilitar [conexões keepalive](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-keepalive).

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

<a id="proxy-http3-max-table-capacity"></a>

### proxy_http3_max_table_capacity

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_http3_max_table_capacity` number;   |
|-------------------------------------------------------------------------------------------|--------------------------------------------|
| Padrão                                                                                    | `proxy_http3_max_table_capacity 4096;`     |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                     |

Define a capacidade da [tabela dinâmica](https://www.ietf.org/archive/id/draft-ietf-quic-qpack-20.html#name-dynamic-table)
para conexões proxy.

#### NOTE
Uma diretiva similar [http3_max_table_capacity](https://pt.angie.software//angie/docs/configuration/modules/http/http_v3.md#http3-max-table-capacity)
define este valor para conexões de servidor.
Para evitar erros, o uso da tabela dinâmica
é desabilitado quando o cache está habilitado no modo proxy.

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

<a id="proxy-http3-stream-buffer-size"></a>

### proxy_http3_stream_buffer_size

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_http3_stream_buffer_size` size;   |
|-------------------------------------------------------------------------------------------|------------------------------------------|
| Padrão                                                                                    | `proxy_http3_stream_buffer_size 64k;`    |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server                             |

Define o [tamanho](https://pt.angie.software//angie/docs/configuration/configfile.md#syntax) do buffer usado para leitura e escrita de
[streams QUIC](#proxy-http-version).

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

<a id="proxy-ignore-client-abort"></a>

### proxy_ignore_client_abort

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

Determina se a conexão com um servidor proxy deve ser fechada quando um cliente fecha a conexão sem aguardar uma resposta.

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

<a id="proxy-ignore-headers"></a>

### proxy_ignore_headers

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_ignore_headers` campo ...;   |
|-------------------------------------------------------------------------------------------|-------------------------------------|
| Padrão                                                                                    | —                                   |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location              |

Desabilita o processamento de certos campos de cabeçalho de resposta do servidor proxy. Os seguintes campos podem ser ignorados: `X-Accel-Redirect`, `X-Accel-Expires`, `X-Accel-Limit-Rate`, `X-Accel-Buffering`, `X-Accel-Charset`, `Expires`, `Cache-Control`, `Set-Cookie`, e `Vary`.

Se não desabilitado, o processamento desses campos de cabeçalho tem o seguinte efeito:

* `X-Accel-Expires`, `Expires`, `Cache-Control`, `Set-Cookie` e `Vary` definem os parâmetros de [cache](#proxy-cache-valid) da resposta;
* `X-Accel-Redirect` executa um [redirecionamento interno](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#internal) para o URI especificado;
* `X-Accel-Limit-Rate` define o [limite de taxa](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#limit-rate) para transmissão de uma resposta para um cliente;
* `X-Accel-Buffering` habilita ou desabilita o [buffering](#proxy-buffering) de uma resposta;
* `X-Accel-Charset` define o [charset](https://pt.angie.software//angie/docs/configuration/modules/http/http_charset.md#id1) desejado de uma resposta.

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

<a id="proxy-intercept-errors"></a>

### proxy_intercept_errors

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

Determina se respostas proxy com códigos maiores ou iguais a 300 devem ser passadas para um cliente ou serem interceptadas e redirecionadas para o Angie para processamento com a diretiva [error_page](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#error-page).

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

<a id="proxy-limit-rate"></a>

### proxy_limit_rate

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_limit_rate` taxa;   |
|-------------------------------------------------------------------------------------------|----------------------------|
| Padrão                                                                                    | `proxy_limit_rate 0;`      |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location     |

Limita a velocidade de leitura da resposta do servidor proxy.
A taxa é especificada em bytes por segundo e pode conter variáveis.

| `0`   | desabilita a limitação de taxa   |
|-------|----------------------------------|

#### NOTE
O limite é definido por requisição, então se o Angie abrir simultaneamente duas conexões para o servidor proxy, a taxa geral será duas vezes maior que o limite especificado. A limitação funciona apenas se o [buffering](#proxy-buffering) de respostas do servidor proxy estiver habilitado.

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

<a id="proxy-max-temp-file-size"></a>

### proxy_max_temp_file_size

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_max_temp_file_size` tamanho;   |
|-------------------------------------------------------------------------------------------|---------------------------------------|
| Padrão                                                                                    | `proxy_max_temp_file_size 1024m;`     |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                |

Quando o [buffering](#proxy-buffering) de respostas do servidor proxy está habilitado, e toda a resposta não cabe nos buffers definidos pelas diretivas [proxy_buffer_size](#proxy-buffer-size) e [proxy_buffers](#proxy-buffers), uma parte da resposta pode ser salva em um arquivo temporário. Esta diretiva define o tamanho máximo do arquivo temporário. O tamanho dos dados escritos no arquivo temporário por vez é definido pela diretiva [proxy_temp_file_write_size](#proxy-temp-file-write-size).

| `0`   | desabilita o buffering de respostas para arquivos temporários   |
|-------|-----------------------------------------------------------------|

#### NOTE
Esta restrição não se aplica a respostas que serão [cacheadas](#proxy-cache) ou [armazenadas em disco](#proxy-store).

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

<a id="proxy-method"></a>

### proxy_method

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_method` método;   |
|-------------------------------------------------------------------------------------------|--------------------------|
| Padrão                                                                                    | —                        |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location   |

Especifica o método HTTP a ser usado em requisições encaminhadas para o servidor proxy em vez do método da requisição do cliente. O valor do parâmetro pode conter variáveis.

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

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

### proxy_next_upstream

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_next_upstream` `error` | `timeout` | `invalid_header` | `http_500` | `http_502` | `http_503` | `http_504` | `http_403` | `http_404` | `http_429` | `non_idempotent` | `off` ...;   |
|-------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Padrão                                                                                    | `proxy_next_upstream error timeout;`                                                                                                                                                      |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                                                                                                                                                                    |

Especifica em quais casos uma requisição deve ser passada para o próximo servidor no grupo [upstream](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#http-upstream):

| `error`          | ocorreu um erro ao estabelecer uma conexão com o servidor, passar uma requisição para ele, ou ler o cabeçalho da resposta;                                                                                                                                                                                                                   |
|------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `timeout`        | ocorreu um timeout ao estabelecer uma conexão com o servidor, passar uma requisição para ele, ou ler o cabeçalho da resposta;                                                                                                                                                                                                                |
| `invalid_header` | um servidor retornou uma resposta vazia ou inválida;                                                                                                                                                                                                                                                                                         |
| `http_500`       | um servidor retornou uma resposta com o código 500;                                                                                                                                                                                                                                                                                          |
| `http_502`       | um servidor retornou uma resposta com o código 502;                                                                                                                                                                                                                                                                                          |
| `http_503`       | um servidor retornou uma resposta com o código 503;                                                                                                                                                                                                                                                                                          |
| `http_504`       | um servidor retornou uma resposta com o código 504;                                                                                                                                                                                                                                                                                          |
| `http_403`       | um servidor retornou uma resposta com o código 403;                                                                                                                                                                                                                                                                                          |
| `http_404`       | um servidor retornou uma resposta com o código 404;                                                                                                                                                                                                                                                                                          |
| `http_429`       | um servidor retornou uma resposta com o código 429;                                                                                                                                                                                                                                                                                          |
| `non_idempotent` | normalmente, requisições com um método [não-idempotente](https://datatracker.ietf.org/doc/html/rfc7231#section-4.2.2)<br/>(`POST`, `LOCK`, `PATCH`) não são passadas para o<br/>próximo servidor se uma requisição foi enviada para um servidor upstream;<br/>habilitar esta opção permite explicitamente tentar novamente tais requisições; |
| `off`            | desabilita passar uma requisição para o próximo servidor.                                                                                                                                                                                                                                                                                    |

#### NOTE
Deve-se ter em mente que passar uma requisição para o próximo servidor só é possível se nada foi enviado para um cliente ainda. Ou seja, se um erro ou timeout ocorre no meio da transferência de uma resposta, corrigir isso é impossível.

A diretiva também define o que é considerado uma [tentativa mal-sucedida](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#max-fails) de comunicação com um servidor.

| `error`<br/><br/>`timeout`<br/><br/>`invalid_header`                                       | sempre consideradas tentativas mal-sucedidas, mesmo se não especificadas na diretiva   |
|--------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------|
| `http_500`<br/><br/>`http_502`<br/><br/>`http_503`<br/><br/>`http_504`<br/><br/>`http_429` | consideradas tentativas mal-sucedidas apenas se especificadas na diretiva              |
| `http_403`<br/><br/>`http_404`                                                             | nunca consideradas tentativas mal-sucedidas                                            |

Passar uma requisição para o próximo servidor pode ser limitado pelo [número de tentativas](#proxy-next-upstream-tries) e por [tempo](#proxy-next-upstream-timeout).

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

<a id="proxy-next-upstream-timeout"></a>

### proxy_next_upstream_timeout

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_next_upstream_timeout` tempo;   |
|-------------------------------------------------------------------------------------------|----------------------------------------|
| Padrão                                                                                    | `proxy_next_upstream_timeout 0;`       |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                 |

Limita o tempo durante o qual uma requisição pode ser passada para o [próximo](#proxy-next-upstream) servidor.

| `0`   | desativa esta limitação   |
|-------|---------------------------|

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

<a id="proxy-next-upstream-tries"></a>

### proxy_next_upstream_tries

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_next_upstream_tries` número;   |
|-------------------------------------------------------------------------------------------|---------------------------------------|
| Padrão                                                                                    | `proxy_next_upstream_tries 0;`        |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                |

Limita o número de tentativas possíveis para passar uma requisição para o [próximo](#proxy-next-upstream) servidor.

| `0`   | desativa esta limitação   |
|-------|---------------------------|

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

<a id="proxy-no-cache"></a>

### proxy_no_cache

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_no_cache` string ...;   |
|-------------------------------------------------------------------------------------------|--------------------------------|
| Padrão                                                                                    | —                              |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location         |

Define condições sob as quais a resposta não será salva em um cache. Se pelo menos um valor dos parâmetros string não estiver vazio e não for igual a "0", então a resposta não será salva:

```nginx
proxy_no_cache $cookie_nocache $arg_nocache$arg_comment;
proxy_no_cache $http_pragma    $http_authorization;
```

Pode ser usado junto com a diretiva [proxy_cache_bypass](#proxy-cache-bypass).

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

<a id="proxy-pass"></a>

### proxy_pass

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_pass` uri;                      |
|-------------------------------------------------------------------------------------------|----------------------------------------|
| Padrão                                                                                    | —                                      |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | location, if in location, limit_except |

Define o protocolo e endereço de um servidor com proxy e uma URI opcional para a qual uma localização deve ser mapeada. Como protocolo, `http` ou `https` podem ser especificados. O endereço pode ser especificado como um nome de domínio ou endereço IP, e uma porta opcional:

```nginx
proxy_pass http://localhost:8000/uri/;
```

ou como um caminho de socket de domínio UNIX especificado após a palavra `unix` e entre dois pontos:

```nginx
proxy_pass http://unix:/tmp/backend.socket:/uri/;
```

Se um nome de domínio resolve para vários endereços, todos eles serão usados de forma round-robin. Além disso, um endereço pode ser especificado como um [grupo de servidores](https://pt.angie.software//angie/docs/configuration/modules/http/http_upstream.md#http-upstream).

O valor do parâmetro pode conter variáveis. Neste caso, se um endereço é especificado como um nome de domínio, o nome é procurado entre os grupos de servidores descritos e, se não encontrado, é determinado usando um [resolver](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#resolver).

<a id="proxy-pass-uri"></a>

Um URI de requisição é passado para o servidor da seguinte forma:

* Se a diretiva `proxy_pass` for especificada **com um URI**, então quando uma requisição é passada para o servidor, a parte de um URI de requisição [normalizado](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#location) que corresponde à localização é substituída por um URI especificado na diretiva:

```nginx
location /name/ {
    proxy_pass http://127.0.0.1/remote/;
}
```

* Se `proxy_pass` for especificado **sem um URI**, o URI da requisição é passado para o servidor na mesma forma como enviado por um cliente quando a requisição original é processada, ou o URI de requisição normalizado completo é passado ao processar o URI alterado:

```nginx
location /some/path/ {
    proxy_pass http://127.0.0.1;
}
```

Em alguns casos, a parte de um URI de requisição a ser substituída não pode ser determinada:

* Quando `location` é especificado usando uma expressão regular, e também dentro de `location` nomeado.

Nestes casos, `proxy_pass` deve ser especificado sem um URI.

* Quando o URI é alterado dentro de um `location` com proxy usando a diretiva [rewrite](https://pt.angie.software//angie/docs/configuration/modules/http/http_rewrite.md#id4), e esta mesma configuração será usada para processar uma requisição (break):

```nginx
location /name/ {
    rewrite    /name/([^/]+) /users?name=$1 break;
    proxy_pass http://127.0.0.1;
}
```

Neste caso, o URI especificado na diretiva é ignorado e o URI de requisição alterado completo é passado para o servidor.

* Quando variáveis são usadas em `proxy_pass`:

```nginx
location /name/ {
    proxy_pass http://127.0.0.1$request_uri;
}
```

Neste caso, se o URI for especificado na diretiva, ele é passado para o servidor como está, substituindo o URI de requisição original.

O proxy [WebSocket](https://pt.angie.software//angie/docs/configuration/processing.md#websocket-proxy) requer configuração especial.

#### NOTE
Se `proxy_pass` 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-45"></a>

<a id="proxy-pass-header"></a>

### proxy_pass_header

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_pass_header` field ...;   |
|-------------------------------------------------------------------------------------------|----------------------------------|
| Padrão                                                                                    | —                                |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location           |

Permite passar campos de cabeçalho [desabilitados de outra forma](#proxy-hide-header) de um servidor com proxy para um cliente.

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

<a id="proxy-pass-request-body"></a>

### proxy_pass_request_body

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

Indica se o corpo da requisição original é passado para o servidor com proxy.

```nginx
location /x-accel-redirect-here/ {
    proxy_method GET;
    proxy_pass_request_body off;
    proxy_set_header Content-Length "";

    proxy_pass ...;
}
```

Veja também as diretivas [proxy_set_header](#proxy-set-header) e [proxy_pass_request_headers](#proxy-pass-request-headers).

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

<a id="proxy-pass-request-headers"></a>

### proxy_pass_request_headers

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

Indica se os campos de cabeçalho da requisição original são passados para o servidor com proxy.

```nginx
location /x-accel-redirect-here/ {
    proxy_method GET;
    proxy_pass_request_headers off;
    proxy_pass_request_body off;

    proxy_pass ...;
}
```

Veja também as diretivas [proxy_set_header](#proxy-set-header) e [proxy_pass_request_body](#proxy-pass-request-body).

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

<a id="proxy-pass-trailers"></a>

### proxy_pass_trailers

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

Permite passar campos de trailer de um servidor com proxy para um cliente.

Uma seção de trailer em HTTP/1.1 é [explicitamente habilitada](https://datatracker.ietf.org/doc/html/rfc9110#section-6.5.1).

```nginx
location / {
    proxy_http_version 1.1;
    proxy_set_header Connection "te";
    proxy_set_header TE "trailers";
    proxy_pass_trailers on;

    proxy_pass ...;
}
```

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

<a id="proxy-quic-active-connection-id-limit"></a>

### proxy_quic_active_connection_id_limit

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_quic_active_connection_id_limit` number;   |
|-------------------------------------------------------------------------------------------|---------------------------------------------------|
| Padrão                                                                                    | `proxy_quic_active_connection_id_limit 2;`        |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server                                      |

Define o valor do parâmetro de transporte `active_connection_id_limit` do [QUIC](#proxy-http-version).
Este é o número máximo de
[IDs de conexão](https://www.rfc-editor.org/rfc/rfc9000.html#name-connection-id)
ativos que podem ser mantidos por servidor.

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

<a id="proxy-quic-gso"></a>

### proxy_quic_gso

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

Alterna o envio de dados em
modo de lote otimizado para [QUIC](#proxy-http-version)
usando
[generic segmentation offload](https://docs.kernel.org/networking/segmentation-offloads.html#generic-segmentation-offload).

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

<a id="proxy-quic-host-key"></a>

### proxy_quic_host_key

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_quic_host_key` file;   |
|-------------------------------------------------------------------------------------------|-------------------------------|
| Padrão                                                                                    | —                             |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server                  |

Define um file com a chave secreta
usada com [QUIC](#proxy-http-version)
para criptografar
tokens de [Stateless Reset](https://www.rfc-editor.org/rfc/rfc9000.html#name-stateless-reset)
e
[Address Validation](https://www.rfc-editor.org/rfc/rfc9000.html#address-validation).
Por padrão, uma chave aleatória é gerada a cada reinicialização.
Tokens gerados com chaves antigas não são aceitos.

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

<a id="proxy-read-timeout"></a>

### proxy_read_timeout

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_read_timeout` time;   |
|-------------------------------------------------------------------------------------------|------------------------------|
| Padrão                                                                                    | `proxy_read_timeout 60s;`    |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location       |

Define um timeout para ler uma resposta do servidor com proxy. O timeout é definido apenas entre duas operações de leitura sucessivas, não para a transmissão de toda a resposta. Se o servidor com proxy não transmitir nada dentro deste tempo, a conexão é fechada.

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

<a id="proxy-redirect"></a>

### proxy_redirect

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_redirect` `default`;<br/><br/>`proxy_redirect` `off`;<br/><br/>`proxy_redirect` redirect replacement;   |
|-------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------|
| Padrão                                                                                    | `proxy_redirect default;`                                                                                      |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                                                                                         |

Define o texto que deve ser alterado nos campos de cabeçalho "Location" e "Refresh" de uma resposta do servidor com proxy.

Suponha que um servidor com proxy retornou o campo de cabeçalho:

```console
Location: http://localhost:8000/two/some/uri/
```

A diretiva

```nginx
proxy_redirect http://localhost:8000/two/ http://frontend/one/;
```

reescreverá esta string para:

```console
Location: http://frontend/one/some/uri/
```

Um nome de servidor pode ser omitido na string replacement:

```nginx
proxy_redirect http://localhost:8000/two/ /;
```

então o nome do servidor primário e a porta, se diferente de 80, serão inseridos.

A substituição padrão especificada pelo parâmetro `default` usa os parâmetros das diretivas [location](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#location) e [proxy_pass](#proxy-pass). Portanto, as duas configurações abaixo são equivalentes:

```nginx
location /one/ {
    proxy_pass     http://upstream:port/two/;
    proxy_redirect default;
}
```

```nginx
location /one/ {
    proxy_pass     http://upstream:port/two/;
    proxy_redirect http://upstream:port/two/ /one/;
}
```

#### WARNING
O parâmetro `default` não é permitido se [proxy_pass](#proxy-pass) for especificado usando variáveis.

Uma string replacement pode conter variáveis:

```nginx
proxy_redirect http://localhost:8000/ http://$host:$server_port/;
```

Um redirect também pode conter variáveis:

```nginx
proxy_redirect http://$proxy_host:8000/ /;
```

A diretiva pode ser especificada usando expressões regulares. Neste caso, redirect deve começar com o símbolo "~" para correspondência sensível a maiúsculas e minúsculas, ou com os símbolos "~\*" para correspondência insensível a maiúsculas e minúsculas. A expressão regular pode conter capturas nomeadas e posicionais, e replacement pode referenciá-las:

```nginx
proxy_redirect ~^(http://[^:]+):\d+(/.+)$ $1$2;
proxy_redirect ~*/user/([^/]+)/(.+)$      http://$1.example.com/$2;
```

Várias diretivas proxy_redirect podem ser especificadas no mesmo nível:

```nginx
proxy_redirect default;
proxy_redirect http://localhost:8000/  /;
proxy_redirect http://www.example.com/ /;
```

Se várias diretivas puderem ser aplicadas aos campos de cabeçalho de uma resposta do servidor proxy, a primeira diretiva correspondente será escolhida.

O parâmetro `off` cancela o efeito das diretivas proxy_redirect herdadas do nível de configuração anterior.

Usando esta diretiva, também é possível adicionar nomes de host a redirecionamentos relativos emitidos por um servidor proxy:

```nginx
proxy_redirect / /;
```

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

<a id="proxy-request-buffering"></a>

### proxy_request_buffering

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

Habilita ou desabilita o buffer do corpo da requisição do cliente.

| `on`   | todo o corpo da requisição é [lido](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#client-body-buffer-size) do cliente antes de enviar a requisição para um servidor proxy.                                       |
|--------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `off`  | o corpo da requisição é enviado para o servidor proxy imediatamente conforme é recebido. Neste caso, a requisição não pode ser passada para o [próximo servidor](#proxy-next-upstream) se o Angie já começou a enviar o corpo da requisição. |

Quando a codificação de transferência em blocos HTTP/1.1 é usada para enviar o corpo da requisição original, o corpo da requisição será armazenado em buffer independentemente do valor da diretiva, a menos que HTTP/1.1 esteja [habilitado](#proxy-http-version) para proxy.

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

<a id="proxy-send-lowat"></a>

### proxy_send_lowat

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_send_lowat` size;   |
|-------------------------------------------------------------------------------------------|----------------------------|
| Padrão                                                                                    | `proxy_send_lowat 0;`      |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location     |

Se a diretiva for definida com um valor diferente de zero, o Angie tentará minimizar o número de operações de envio em conexões de saída para um servidor proxy usando a flag NOTE_LOWAT do método [kqueue](https://pt.angie.software//angie/docs/configuration/processing.md#kqueue), ou a opção de socket SO_SNDLOWAT, com o tamanho especificado.

#### NOTE
Esta diretiva é ignorada no Linux, Solaris e Windows.

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

<a id="proxy-send-timeout"></a>

### proxy_send_timeout

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_send_timeout` time;   |
|-------------------------------------------------------------------------------------------|------------------------------|
| Padrão                                                                                    | `proxy_send_timeout 60s;`    |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location       |

Define um timeout para transmitir uma requisição para o servidor proxy. O timeout é definido apenas entre duas operações de escrita sucessivas, não para a transmissão de toda a requisição. Se o servidor proxy não receber nada dentro deste tempo, a conexão é fechada.

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

<a id="proxy-set-body"></a>

### proxy_set_body

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_set_body` value;   |
|-------------------------------------------------------------------------------------------|---------------------------|
| Padrão                                                                                    | —                         |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location    |

Permite redefinir o corpo da requisição passado para o servidor proxy. O valor pode conter texto, variáveis e suas combinações.

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

<a id="proxy-set-header"></a>

### proxy_set_header

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_set_header` field value;      |
|-------------------------------------------------------------------------------------------|--------------------------------------|
| Padrão                                                                                    | `proxy_set_header Host $proxy_host;` |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location               |

Permite redefinir ou anexar campos ao cabeçalho da requisição [passado](#proxy-pass-request-headers) para o servidor proxy. O value pode conter texto, variáveis e suas combinações. Essas diretivas são herdadas do nível de configuração anterior se e somente se não houver diretivas proxy_set_header definidas no nível atual. Por padrão, apenas dois campos são redefinidos:

```nginx
proxy_set_header Host       $proxy_host;
proxy_set_header Connection close;
```

Se o cache estiver habilitado, os campos de cabeçalho `If-Modified-Since`, `If-Unmodified-Since`, `If-None-Match`, `If-Match`, `Range` e `If-Range` da requisição original não são passados para o servidor proxy.

Um campo de cabeçalho de requisição "Host" inalterado pode ser passado assim:

```nginx
proxy_set_header Host       $http_host;
```

No entanto, se este campo não estiver presente em um cabeçalho de requisição do cliente, então nada será passado. Neste caso, é melhor usar a variável [$host](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#v-host) - seu valor é igual ao nome do servidor no campo de cabeçalho de requisição "Host" ou o nome do servidor primário se este campo não estiver presente:

```nginx
proxy_set_header Host       $host;
```

Além disso, o nome do servidor pode ser passado junto com a porta do servidor proxy:

```nginx
proxy_set_header Host       $host:$proxy_port;
```

Se o valor de um campo de cabeçalho for uma string vazia, então este campo não será passado para um servidor proxy:

```nginx
proxy_set_header Accept-Encoding "";
```

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

<a id="proxy-socket-keepalive"></a>

### proxy_socket_keepalive

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

Configura o comportamento "TCP keepalive" para conexões de saída para um servidor proxy.

| `off`   | Por padrão, as configurações do sistema operacional estão em vigor para o socket.   |
|---------|-------------------------------------------------------------------------------------|
| `on`    | A opção de socket SO_KEEPALIVE é ativada para o socket.                             |

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

<a id="proxy-ssl-certificate"></a>

### proxy_ssl_certificate

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_ssl_certificate` file [file];   |
|-------------------------------------------------------------------------------------------|----------------------------------------|
| Padrão                                                                                    | —                                      |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                 |

Especifica um arquivo com o certificado no formato PEM usado para autenticação em um servidor HTTPS proxy. Variáveis podem ser usadas no nome do arquivo.

Quando [proxy_ssl_ntls](#proxy-ssl-ntls) está habilitado, a diretiva aceita dois argumentos em vez de um:

```nginx
location /proxy {
    proxy_ssl_ntls  on;

    proxy_ssl_certificate      sign.crt enc.crt;
    proxy_ssl_certificate_key  sign.key enc.key;

    proxy_ssl_ciphers "ECC-SM2-WITH-SM4-SM3:ECDHE-SM2-WITH-SM4-SM3:RSA";

    proxy_pass https://backend:443;
}
```

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

<a id="proxy-ssl-certificate-cache"></a>

### proxy_ssl_certificate_cache

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_ssl_certificate_cache` `off`;<br/><br/>`proxy_ssl_certificate_cache` `max=`N [`inactive=`time] [`valid=`time];   |
|-------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------|
| Padrão                                                                                    | `proxy_ssl_certificate_cache off;`                                                                                      |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                                                                                                  |

Define um cache que armazena [certificados SSL](#proxy-ssl-certificate) e [chaves secretas](#proxy-ssl-certificate-key) especificados usando variáveis.

A diretiva suporta os seguintes parâmetros:

- `max` — define o número máximo de elementos no cache. Quando o cache transborda, os elementos menos recentemente usados (LRU) são removidos.
- `inactive` — define o tempo após o qual um elemento é removido se não foi acessado. O padrão é 10 segundos.
- `valid` — define o tempo durante o qual um elemento em cache é considerado válido e pode ser reutilizado. O padrão é 60 segundos. Após este período, os certificados são recarregados ou revalidados.
- `off` — desabilita o cache.

Exemplo:

```nginx
proxy_ssl_certificate       $proxy_ssl_server_name.crt;
proxy_ssl_certificate_key   $proxy_ssl_server_name.key;
proxy_ssl_certificate_cache max=1000 inactive=20s valid=1m;
```

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

<a id="proxy-ssl-certificate-key"></a>

### proxy_ssl_certificate_key

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_ssl_certificate_key` file [file];   |
|-------------------------------------------------------------------------------------------|--------------------------------------------|
| Padrão                                                                                    | —                                          |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                     |

Especifica um arquivo com a chave secreta no formato PEM usado para autenticação em um servidor HTTPS proxy.

O valor `engine:`name`:id` pode ser especificado em vez do arquivo, que carrega uma chave secreta com um id especificado do mecanismo OpenSSL name.

Variáveis podem ser usadas no nome do arquivo.

Quando [proxy_ssl_ntls](#proxy-ssl-ntls) está habilitado, a diretiva aceita dois argumentos em vez de um:

```nginx
location /proxy {
    proxy_ssl_ntls  on;

    proxy_ssl_certificate      sign.crt enc.crt;
    proxy_ssl_certificate_key  sign.key enc.key;

    proxy_ssl_ciphers "ECC-SM2-WITH-SM4-SM3:ECDHE-SM2-WITH-SM4-SM3:RSA";

    proxy_pass https://backend:443;
}
```

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

<a id="proxy-ssl-ciphers"></a>

### proxy_ssl_ciphers

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_ssl_ciphers` ciphers;   |
|-------------------------------------------------------------------------------------------|--------------------------------|
| Padrão                                                                                    | `proxy_ssl_ciphers DEFAULT;`   |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location         |

Especifica as cifras habilitadas para requisições a um servidor HTTPS com proxy. As cifras são especificadas no formato compreendido pela biblioteca OpenSSL.

A lista de cifras depende da versão do OpenSSL instalada.
A lista completa pode ser visualizada usando o comando `openssl ciphers`.

#### WARNING
A diretiva `proxy_ssl_ciphers` *não* configura cifras para TLS
1.3 ao usar OpenSSL. Para ajustar cifras TLS 1.3 com OpenSSL, use a
diretiva [proxy_ssl_conf_command](#proxy-ssl-conf-command), que foi adicionada para suportar
configuração SSL avançada.

- No LibreSSL, cifras TLS 1.3 *podem* ser configuradas usando
  `proxy_ssl_ciphers`.
- No BoringSSL, cifras TLS 1.3 não podem ser configuradas de forma alguma.

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

<a id="proxy-ssl-conf-command"></a>

### proxy_ssl_conf_command

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_ssl_conf_command` name value;   |
|-------------------------------------------------------------------------------------------|----------------------------------------|
| Padrão                                                                                    | —                                      |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                 |

Define [comandos](https://docs.openssl.org/master/man3/SSL_CONF_cmd/) arbitrários de configuração OpenSSL ao estabelecer uma conexão com o servidor HTTPS com proxy.

#### NOTE
A diretiva é suportada ao usar OpenSSL 1.0.2 ou superior.
Para configurar cifras TLS 1.3 com OpenSSL, use o comando `ciphersuites`.

Várias diretivas proxy_ssl_conf_command podem ser especificadas no mesmo nível. Essas diretivas são herdadas do nível de configuração anterior se e somente se não há diretivas proxy_ssl_conf_command definidas no nível atual.

#### WARNING
Note que configurar o OpenSSL diretamente pode resultar em comportamento inesperado.

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

<a id="proxy-ssl-crl"></a>

### proxy_ssl_crl

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_ssl_crl` file;   |
|-------------------------------------------------------------------------------------------|-------------------------|
| Padrão                                                                                    | —                       |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location  |

Especifica um arquivo com certificados revogados (CRL) no formato PEM usado para [verificar](#proxy-ssl-verify) o certificado do servidor HTTPS com proxy.

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

<a id="proxy-ssl-name"></a>

### proxy_ssl_name

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_ssl_name` name;        |
|-------------------------------------------------------------------------------------------|-------------------------------|
| Padrão                                                                                    | `proxy_ssl_name $proxy_host;` |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location        |

Permite sobrescrever o nome do servidor usado para [verificar](#proxy-ssl-verify) o certificado do servidor HTTPS com proxy e para ser [passado através de SNI](#proxy-ssl-server-name) ao estabelecer uma conexão com o servidor HTTPS com proxy.

Por padrão, a parte do host da URL [proxy_pass](#proxy-pass) é usada.

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

<a id="proxy-ssl-ntls"></a>

### proxy_ssl_ntls

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

Habilita suporte do lado do cliente para NTLS usando a biblioteca TLS [TongSuo](https://github.com/Tongsuo-Project/Tongsuo).

```nginx
location /proxy {
    proxy_ssl_ntls  on;

    proxy_ssl_certificate      sign.crt enc.crt;
    proxy_ssl_certificate_key  sign.key enc.key;

    proxy_ssl_ciphers "ECC-SM2-WITH-SM4-SM3:ECDHE-SM2-WITH-SM4-SM3:RSA";

    proxy_pass https://backend:443;
}
```

#### NOTE
O Angie deve ser compilado com o parâmetro de configuração `--with-ntls` e a biblioteca SSL correspondente com suporte NTLS

```default
./configure --with-openssl=../Tongsuo-8.3.0 \
            --with-openssl-opt=enable-ntls  \
            --with-ntls
```

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

<a id="proxy-ssl-password-file"></a>

### proxy_ssl_password_file

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_ssl_password_file` file;   |
|-------------------------------------------------------------------------------------------|-----------------------------------|
| Padrão                                                                                    | —                                 |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location            |

Especifica um arquivo com senhas para [chaves secretas](#proxy-ssl-certificate-key) onde cada senha é especificada em uma linha separada. As senhas são tentadas em sequência ao carregar a chave.

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

<a id="proxy-ssl-protocols"></a>

### proxy_ssl_protocols

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_ssl_protocols` [`SSLv2`] [`SSLv3`] [`TLSv1`] [`TLSv1.1`] [`TLSv1.2`] [`TLSv1.3`];   |
|-------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------|
| Padrão                                                                                    | `proxy_ssl_protocols TLSv1.2 TLSv1.3;`                                                     |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                                                                     |

#### Versionchanged
Alterado na versão 1.2.0: Parâmetro `TLSv1.3` adicionado ao conjunto padrão.

Habilita os protocolos especificados para requisições a um servidor HTTPS com proxy.

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

<a id="proxy-ssl-server-name"></a>

### proxy_ssl_server_name

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

Habilita ou desabilita a passagem do nome do servidor
definido pela diretiva [proxy_ssl_name](#proxy-ssl-name)
via a extensão TLS
[Server Name Indication](http://en.wikipedia.org/wiki/Server_Name_Indication)
(SNI,
[RFC 6066](https://datatracker.ietf.org/doc/html/rfc6066.html))
ao estabelecer uma conexão com o servidor HTTPS com proxy.

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

<a id="proxy-ssl-session-reuse"></a>

### proxy_ssl_session_reuse

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

Determina se sessões SSL podem ser reutilizadas ao trabalhar com o servidor com proxy. Se os erros "SSL3_GET_FINISHED:digest check failed" aparecerem nos logs, tente desabilitar a reutilização de sessão.

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

<a id="proxy-ssl-trusted-certificate"></a>

### proxy_ssl_trusted_certificate

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_ssl_trusted_certificate` file;   |
|-------------------------------------------------------------------------------------------|-----------------------------------------|
| Padrão                                                                                    | —                                       |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                  |

Especifica um arquivo com certificados CA confiáveis no formato PEM usado para [verificar](#proxy-ssl-verify) o certificado do servidor HTTPS com proxy.

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

<a id="proxy-ssl-verify"></a>

### proxy_ssl_verify

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

Habilita ou desabilita a verificação do certificado do servidor HTTPS com proxy.

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

<a id="proxy-ssl-verify-depth"></a>

### proxy_ssl_verify_depth

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_ssl_verify_depth` number;   |
|-------------------------------------------------------------------------------------------|------------------------------------|
| Padrão                                                                                    | `proxy_ssl_verify_depth 1;`        |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location             |

Define a profundidade de verificação na cadeia de certificados do servidor HTTPS com proxy.

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

<a id="proxy-store"></a>

### proxy_store

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

Habilita o salvamento de arquivos em disco.

| `on`   | salva arquivos de acordo com os caminhos especificados nas diretivas [alias](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#alias) ou [root](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#root)   |
|--------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `off`  | desabilita o salvamento de arquivos                                                                                                                                                                                                                       |

O nome do arquivo pode ser definido explicitamente usando uma `string` com variáveis:

```nginx
proxy_store /data/www$original_uri;
```

O tempo de modificação dos arquivos é definido de acordo com o campo de cabeçalho `Last-Modified` recebido na resposta. A resposta é primeiro escrita em um arquivo temporário, e então o arquivo é renomeado. O arquivo temporário e o armazenamento persistente para a resposta podem estar em sistemas de arquivos diferentes. No entanto, esteja ciente de que neste caso, em vez da operação barata de renomeação dentro de um sistema de arquivos, o arquivo é copiado de um sistema de arquivos para outro. É portanto recomendado que para qualquer localização específica tanto os arquivos salvos quanto um diretório contendo arquivos temporários, definido pela diretiva [proxy_temp_path](#proxy-temp-path), sejam colocados no mesmo sistema de arquivos.

Esta diretiva pode ser usada para criar cópias locais de arquivos estáticos imutáveis, por exemplo:

```nginx
location /images/ {
    root               /data/www;
    error_page         404 = /fetch$uri;
}

location /fetch/ {
    internal;

    proxy_pass         http://backend/;
    proxy_store        on;
    proxy_store_access user:rw group:rw all:r;
    proxy_temp_path    /data/temp;

    alias              /data/www/;
}
```

ou assim:

```nginx
location /images/ {
    root               /data/www;
    error_page         404 = @fetch;
}

location @fetch {
    internal;

    proxy_pass         http://backend;
    proxy_store        on;
    proxy_store_access user:rw group:rw all:r;
    proxy_temp_path    /data/temp;

    root               /data/www;
}
```

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

<a id="proxy-store-access"></a>

### proxy_store_access

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_store_access` usuários:permissões ...;   |
|-------------------------------------------------------------------------------------------|-------------------------------------------------|
| Padrão                                                                                    | `proxy_store_access user:rw;`                   |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                          |

Define permissões de acesso para arquivos e diretórios recém-criados, por exemplo:

```nginx
proxy_store_access user:rw group:rw all:r;
```

Se quaisquer permissões de acesso `group` ou `all` forem especificadas, então as permissões `user` podem ser omitidas:

```nginx
proxy_store_access group:rw all:r;
```

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

<a id="proxy-temp-file-write-size"></a>

### proxy_temp_file_write_size

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_temp_file_write_size` tamanho;   |
|-------------------------------------------------------------------------------------------|-----------------------------------------|
| Padrão                                                                                    | `proxy_temp_file_write_size 8k|16k;`    |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                  |

Limita o tamanho dos dados gravados em um arquivo temporário por vez, quando o buffering de respostas do servidor com proxy para arquivos temporários está habilitado. Por padrão, o tamanho é limitado por dois buffers definidos pelas diretivas [proxy_buffer_size](#proxy-buffer-size) e [proxy_buffers](#proxy-buffers). O tamanho máximo de um arquivo temporário é definido pela diretiva [proxy_max_temp_file_size](#proxy-max-temp-file-size).

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

<a id="proxy-temp-path"></a>

### proxy_temp_path

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_temp_path` caminho [nível1 [nível2 [nível3]]]\`;                                                                                                                          |
|-------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Padrão                                                                                    | `proxy_temp_path proxy_temp;`<br/>(o caminho depende da [opção de compilação](https://pt.angie.software//angie/docs/installation/sourcebuild.md#paths) `--http-proxy-temp-path`) |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                                                                                                                                                           |

Define um diretório para armazenar arquivos temporários com dados recebidos de servidores com proxy. Até três níveis de hierarquia de subdiretórios podem ser usados abaixo do diretório especificado. Por exemplo, na seguinte configuração

```nginx
proxy_temp_path /spool/angie/proxy_temp 1 2;
```

um arquivo temporário pode parecer assim:

```nginx
/spool/angie/proxy_temp/7/45/00000123457
```

Veja também o parâmetro `use_temp_path` da diretiva [proxy_cache_path](#proxy-cache-path).

<a id="built-in-variables-6"></a>

## Variáveis Integradas

O módulo http_proxy suporta variáveis integradas que podem ser usadas para compor cabeçalhos usando a diretiva [proxy_set_header](#proxy-set-header):

<a id="v-proxy-host"></a>

### `$proxy_host`

nome e porta de um servidor com proxy conforme especificado na diretiva [proxy_pass](#proxy-pass);

<a id="v-proxy-port"></a>

### `$proxy_port`

porta de um servidor com proxy conforme especificado na diretiva [proxy_pass](#proxy-pass), ou a porta padrão do protocolo;

<a id="v-proxy-add-x-forwarded-for"></a>

### `$proxy_add_x_forwarded_for`

o campo de cabeçalho de requisição do cliente `X-Forwarded-For` com a variável [$remote_addr](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#v-remote-addr) anexada a ele, separada por vírgula. Se o campo `X-Forwarded-For` não estiver presente no cabeçalho da requisição do cliente, a variável [$proxy_add_x_forwarded_for](#v-proxy-add-x-forwarded-for) é igual à variável [$remote_addr](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#v-remote-addr).
