SCGI#

Permite passar requisições para um servidor SCGI.

Exemplo de Configuração#

location / {
    include   scgi_params;
    scgi_pass localhost:9000;
}

Diretivas#

scgi_bind#

Sintaxe

scgi_bind address [transparent] | off;

Padrão

Contexto

http, server, location

Faz com que conexões de saída para um servidor SCGI 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 scgi_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 SCGI se originem de um endereço IP não-local, por exemplo, de um endereço IP real de um cliente:

scgi_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. 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.

Nota

É necessário configurar a tabela de roteamento do kernel para interceptar o tráfego de rede do servidor SCGI.

scgi_buffer_size#

Sintaxe

scgi_buffer_size size;

Padrão

scgi_buffer_size 4k|8k;

Contexto

http, server, location

Define o tamanho do buffer usado para ler a primeira parte da resposta recebida do servidor SCGI. 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.

scgi_buffering#

Sintaxe

scgi_buffering on | off;

Padrão

scgi_buffering on;

Contexto

http, server, location

Habilita ou desabilita o buffering de respostas do servidor SCGI.

on

O Angie recebe uma resposta do servidor SCGI o mais rápido possível, salvando-a nos buffers definidos pelas diretivas scgi_buffer_size e scgi_buffers. Se toda a resposta não couber na memória, uma parte dela pode ser salva em um arquivo temporário no disco. A escrita em arquivos temporários é controlada pelas diretivas scgi_max_temp_file_size e scgi_temp_file_write_size.

off

A resposta é passada para um cliente de forma síncrona, imediatamente conforme é recebida. O Angie não tentará ler toda a resposta do servidor SCGI. O tamanho máximo dos dados que o Angie pode receber do servidor de uma vez é definido pela diretiva scgi_buffer_size.

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 scgi_ignore_headers.

scgi_buffers#

Sintaxe

scgi_buffers number size;

Padrão

scgi_buffers 8 4k | 8k;

Contexto

http, server, location

Define o número e tamanho dos buffers usados para ler uma resposta do servidor SCGI, 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.

scgi_busy_buffers_size#

Sintaxe

scgi_busy_buffers_size size;

Padrão

scgi_busy_buffers_size 8k | 16k;

Contexto

http, server, location

Quando o buffering de respostas do servidor SCGI 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 scgi_buffer_size e scgi_buffers.

scgi_cache#

Sintaxe

scgi_cache zone | off;

Padrão

scgi_cache off;

Contexto

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.

scgi_cache_background_update#

Sintaxe

scgi_cache_background_update on | off;

Padrão

scgi_cache_background_update off;

Contexto

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.

Aviso

Note que é necessário permitir o uso de uma resposta em cache obsoleta quando ela está sendo atualizada.

scgi_cache_bypass#

Sintaxe

scgi_cache_bypass ...;

Padrão

Contexto

http, server, location

Define condições sob as quais a resposta não será obtida de um 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á obtida do cache:

scgi_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
scgi_cache_bypass $http_pragma    $http_authorization;

Pode ser usado junto com a diretiva scgi_no_cache.

scgi_cache_key#

Sintaxe

scgi_cache_key string;

Padrão

Contexto

http, server, location

Define uma chave para cache, por exemplo

scgi_cache_key localhost:9000$request_uri;

scgi_cache_lock#

Sintaxe

scgi_cache_lock on | off;

Padrão

scgi_cache_lock off;

Contexto

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 scgi_cache_key passando uma requisição para um servidor SCGI. Outras requisições do mesmo elemento de cache irão aguardar uma resposta aparecer no cache ou o bloqueio de cache para este elemento ser liberado, até o tempo definido pela diretiva scgi_cache_lock_timeout.

scgi_cache_lock_age#

Sintaxe

scgi_cache_lock_age time;

Padrão

scgi_cache_lock_age 5s;

Contexto

http, server, location

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

scgi_cache_lock_timeout#

Sintaxe

scgi_cache_lock_timeout time;

Padrão

scgi_cache_lock_timeout 5s;

Contexto

http, server, location

Define um timeout para scgi_cache_lock. Quando o tempo expira, a requisição será passada para o servidor SCGI, porém, a resposta não será armazenada em cache.

scgi_cache_max_range_offset#

Sintaxe

scgi_cache_max_range_offset number;

Padrão

Contexto

http, server, location

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

scgi_cache_methods#

Sintaxe

scgi_cache_methods GET | HEAD | POST ...;

Padrão

scgi_cache_methods GET HEAD;

Contexto

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, embora seja recomendado especificá-los explicitamente. Veja também a diretiva scgi_no_cache.

scgi_cache_min_uses#

Sintaxe

scgi_cache_min_uses number;

Padrão

scgi_cache_min_uses 1;

Contexto

http, server, location

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

scgi_cache_path#

Sintaxe

scgi_cache_path path [levels=levels] [use_temp_path=on | off] keys_zone=name:size [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

http

Define o caminho e outros parâmetros de um cache. Os dados do cache são armazenados em arquivos. O nome do arquivo em um cache é resultado da aplicação da função MD5 à chave de cache.

O parâmetro 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:

scgi_cache_path /data/angie/cache levels=1:2 keys_zone=one:10m;

os nomes de arquivo em um cache ficarão assim:

/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.

O diretório para arquivos temporários é definido baseado no parâmetro use_temp_path.

on

Se este parâmetro for omitido ou definido para o valor on, o diretório definido pela diretiva scgi_temp_path para a localização dada será usado.

off

Arquivos temporários serão colocados diretamente no diretório de cache.

Além disso, todas as chaves ativas e informações sobre dados são armazenadas em uma zona de memória compartilhada, cujo nome e tamanho são configurados pelo parâmetro keys_zone. Uma zona de um megabyte pode armazenar cerca de 8 mil chaves.

Dados em cache que não são acessados durante o tempo especificado pelo parâmetro inactive são removidos do cache independentemente de sua atualidade.

Por padrão, inactive é definido para 10 minutos.

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 cache e quando o tamanho é excedido ou não há espaço livre suficiente, ele remove os dados usados menos recentemente. Os dados são removidos em iterações.

max_size

tamanho máximo do cache

min_free

quantidade mínima de espaço livre no sistema de arquivos com cache

manager_files

limita o número de itens a serem excluídos durante uma iteração

Por padrão, 100

manager_threshold

limita a duração de uma iteração

Por padrão, 200 milissegundos

manager_sleep

configura uma pausa entre iterações

Por padrão, 50 milissegundos

Um minuto após o Angie iniciar, o processo especial carregador de cache é ativado. Ele carrega informações sobre dados previamente armazenados em cache no sistema de arquivos em uma zona de cache. O carregamento também é feito em iterações.

loader_files

limita o número de itens a carregar durante uma iteração

Por padrão, 100

loader_threshold

limita a duração de uma iteração

Por padrão, 200 milissegundos

loader_sleep

configura uma pausa entre iterações

Por padrão, 50 milissegundos

scgi_cache_revalidate#

Sintaxe

scgi_cache_revalidate on | off;

Padrão

scgi_cache_revalidate off;

Contexto

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.

scgi_cache_use_stale#

Sintaxe

scgi_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_503 | http_403 | http_404 | http_429 | off ...;

Padrão

scgi_cache_use_stale off;

Contexto

http, server, location

Determina em quais casos uma resposta em cache desatualizada pode ser usada. Os parâmetros da diretiva correspondem aos parâmetros da diretiva scgi_next_upstream.

error

permite usar uma resposta em cache desatualizada se um servidor SCGI para processar uma requisição não puder ser selecionado.

updating

parâmetro adicional, permite usar uma resposta em cache desatualizada se ela estiver sendo atualizada no momento. Isso permite minimizar o número de acessos aos servidores SCGI ao atualizar dados em cache.

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

  • A extensão stale-while-revalidate do campo de cabeçalho Cache-Control permite usar uma resposta em cache desatualizada se ela estiver sendo atualizada no momento.

  • A extensão stale-if-error do campo de cabeçalho Cache-Control permite usar uma resposta em cache desatualizada em caso de erro.

Nota

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

Para minimizar o número de acessos aos servidores SCGI ao popular um novo elemento de cache, a diretiva scgi_cache_lock pode ser usada.

scgi_cache_valid#

Sintaxe

scgi_cache_valid [code ...] time;

Padrão

Contexto

http, server, location

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

scgi_cache_valid 200 302 10m;
scgi_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

scgi_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:

scgi_cache_valid 200 302 10m;
scgi_cache_valid 301      1h;
scgi_cache_valid any      1m;

Nota

Parâmetros de cache também podem ser definidos diretamente no cabeçalho de 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 scgi_ignore_headers.

scgi_connect_timeout#

Sintaxe

scgi_connect_timeout time;

Padrão

scgi_connect_timeout 60s;

Contexto

http, server, location

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

scgi_connection_drop#

Sintaxe

scgi_connection_drop time | on | off;

Padrão

scgi_connection_drop off;

Contexto

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 ou o comando da API 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 de encerramento de conexão; com on definido, as conexões são descartadas imediatamente.

scgi_force_ranges#

Sintaxe

scgi_force_ranges on | off;

Padrão

scgi_force_ranges off;

Contexto

http, server, location

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

scgi_hide_header#

Sintaxe

scgi_hide_header field;

Padrão

Contexto

http, server, location

Por padrão, o Angie não passa os campos de cabeçalho Status e X-Accel-... da resposta de um servidor SCGI para um cliente. A diretiva scgi_hide_header define campos adicionais que não serão passados. Se, ao contrário, a passagem de campos deve ser permitida, a diretiva scgi_pass_header pode ser usada.

scgi_ignore_client_abort#

Sintaxe

scgi_ignore_client_abort on | off;

Padrão

scgi_ignore_client_abort off;

Contexto

http, server, location

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

scgi_ignore_headers#

Sintaxe

scgi_ignore_headers campo ...;

Padrão

Contexto

http, server, location

Desabilita o processamento de certos campos de cabeçalho de resposta do servidor SCGI. 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 da resposta;

  • X-Accel-Redirect executa um redirecionamento interno para o URI especificado;

  • X-Accel-Limit-Rate define o limite de taxa para transmissão de uma resposta para um cliente;

  • X-Accel-Buffering habilita ou desabilita o buffering de uma resposta;

  • X-Accel-Charset define o charset desejado de uma resposta.

scgi_intercept_errors#

Sintaxe

scgi_intercept_errors on | off;

Padrão

scgi_intercept_errors off;

Contexto

http, server, location

Determina se as respostas do servidor SCGI 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.

scgi_limit_rate#

Sintaxe

scgi_limit_rate taxa;

Padrão

scgi_limit_rate 0;

Contexto

http, server, location

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

0

desabilita a limitação de taxa

Nota

O limite é definido por requisição, e assim se o Angie abrir simultaneamente duas conexões para o servidor SCGI, a taxa geral será duas vezes maior que o limite especificado. A limitação funciona apenas se o buffering de respostas do servidor SCGI estiver habilitado.

scgi_max_temp_file_size#

Sintaxe

scgi_max_temp_file_size tamanho;

Padrão

scgi_max_temp_file_size 1024m;

Contexto

http, server, location

Quando o buffering de respostas do servidor SCGI está habilitado, e toda a resposta não cabe nos buffers definidos pelas diretivas scgi_buffer_size e scgi_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 scgi_temp_file_write_size.

0

desabilita o buffering de respostas para arquivos temporários

Nota

Esta restrição não se aplica a respostas que serão cacheadas ou armazenadas em disco.

scgi_next_upstream#

Sintaxe

scgi_next_upstream error | timeout | invalid_header | http_500 | http_503 | http_403 | http_404 | http_429 | non_idempotent | off ...;

Padrão

scgi_next_upstream error timeout;

Contexto

http, server, location

Especifica em quais casos uma requisição deve ser passada para o próximo servidor:

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_503

um servidor retornou uma resposta com o código 503;

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 (POST, LOCK, PATCH) não são passadas para o próximo servidor se uma requisição foi enviada para um servidor upstream; habilitar esta opção permite explicitamente tentar novamente tais requisições;

off

desabilita passar uma requisição para o próximo servidor.

Nota

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 de comunicação com um servidor.

error

timeout

invalid_header

são sempre consideradas tentativas mal-sucedidas, mesmo se não estão especificadas na diretiva

http_500

http_503

http_429

são consideradas tentativas mal-sucedidas apenas se estão especificadas na diretiva

http_403

http_404

nunca são consideradas tentativas mal-sucedidas

Passar uma requisição para o próximo servidor pode ser limitado pelo número de tentativas e por tempo.

scgi_next_upstream_timeout#

Sintaxe

scgi_next_upstream_timeout tempo;

Padrão

scgi_next_upstream_timeout 0;

Contexto

http, server, location

Limita o tempo durante o qual uma requisição pode ser passada para o próximo servidor.

0

desativa esta limitação

scgi_next_upstream_tries#

Sintaxe

scgi_next_upstream_tries número;

Padrão

scgi_next_upstream_tries 0;

Contexto

http, server, location

Limita o número de tentativas possíveis para passar uma requisição para o próximo servidor.

0

desativa esta limitação

scgi_no_cache#

Sintaxe

scgi_no_cache string ...;

Padrão

Contexto

http, server, location

Define condições sob as quais a resposta não será salva em 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:

scgi_no_cache $cookie_nocache $arg_nocache$arg_comment;
scgi_no_cache $http_pragma    $http_authorization;

Pode ser usado junto com a diretiva scgi_cache_bypass.

scgi_param#

Sintaxe

scgi_param parâmetro valor [if_not_empty];

Padrão

Contexto

http, server, location

Define um parâmetro que deve ser passado para o servidor SCGI. O valor pode conter texto, variáveis e sua combinação. Essas diretivas são herdadas do nível de configuração anterior se e somente se não houver diretivas scgi_param definidas no nível atual.

As variáveis de ambiente CGI padrão devem ser fornecidas como cabeçalhos SCGI, veja o arquivo scgi_params fornecido na distribuição:

location / {
    include scgi_params;
#    ...
}

Se a diretiva for especificada com if_not_empty, então tal parâmetro será passado para o servidor apenas se seu valor não estiver vazio:

scgi_param HTTPS $https if_not_empty;

scgi_pass#

Sintaxe

scgi_pass uri;

Padrão

Contexto

location, if in location

Define o endereço de um servidor SCGI. O endereço pode ser especificado como um nome de domínio ou endereço IP, e uma porta opcional:

scgi_pass localhost:9000;

ou como um caminho de socket de domínio UNIX:

scgi_pass unix:/tmp/scgi.socket;

Se um nome de domínio resolver para vários endereços, todos eles serão usados em modo round-robin. Além disso, um endereço pode ser especificado como um grupo de servidores.

O valor do parâmetro pode conter variáveis. Neste caso, se um endereço for especificado como um nome de domínio, o nome é procurado entre os grupos de servidores descritos e, se não for encontrado, é determinado usando um resolver.

scgi_pass_header#

Sintaxe

scgi_pass_header campo ...;

Padrão

Contexto

http, server, location

Permite passar campos de cabeçalho normalmente desabilitados de um servidor SCGI para um cliente.

scgi_pass_request_body#

Sintaxe

scgi_pass_request_body on | off;

Padrão

scgi_pass_request_body on;

Contexto

http, server, location

Indica se o corpo da requisição original é passado para o servidor SCGI. Veja também a diretiva scgi_pass_request_headers.

scgi_pass_request_headers#

Sintaxe

scgi_pass_request_headers on | off;

Padrão

scgi_pass_request_headers on;

Contexto

http, server, location

Indica se os campos de cabeçalho da requisição original são passados para o servidor SCGI. Veja também a diretiva scgi_pass_request_body.

scgi_read_timeout#

Sintaxe

scgi_read_timeout tempo;

Padrão

scgi_read_timeout 60s;

Contexto

http, server, location

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

scgi_request_buffering#

Sintaxe

scgi_request_buffering on | off;

Padrão

scgi_request_buffering on;

Contexto

http, server, location

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

on

todo o corpo da requisição é lido do cliente antes de enviar a requisição para um servidor SCGI.

off

o corpo da requisição é enviado para o servidor SCGI imediatamente conforme é recebido. Neste caso, a requisição não pode ser passada para o próximo servidor se o Angie já começou a enviar o corpo da requisição.

Quando a codificação de transferência HTTP/1.1 chunked é usada para enviar o corpo da requisição original, o corpo da requisição será armazenado em buffer independentemente do valor da diretiva.

scgi_send_timeout#

Sintaxe

scgi_send_timeout tempo;

Padrão

scgi_send_timeout 60s;

Contexto

http, server, location

Define um timeout para transmitir uma requisição para o servidor SCGI. 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 SCGI não receber nada dentro deste tempo, a conexão é fechada.

scgi_socket_keepalive#

Sintaxe

scgi_socket_keepalive on | off;

Padrão

scgi_socket_keepalive off;

Contexto

http, server, location

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

of

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.

scgi_store#

Sintaxe

scgi_store on | off | string;

Padrão

scgi_store off;

Contexto

http, server, location

Habilita o salvamento de arquivos em disco.

on

salva arquivos com caminhos correspondentes às diretivas alias ou root

off

desabilita o salvamento de arquivos

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

scgi_store /data/www$original_uri;

O tempo de modificação dos arquivos é definido de acordo com o campo de cabeçalho de resposta Last-Modified recebido. A resposta é primeiro escrita em um arquivo temporário, e então o arquivo é renomeado. Arquivos temporários e o armazenamento persistente podem ser colocados em sistemas de arquivos diferentes. No entanto, esteja ciente de que neste caso um arquivo é copiado entre dois sistemas de arquivos em vez da operação barata de renomeação. É, portanto, recomendado que para qualquer localização dada, tanto os arquivos salvos quanto um diretório contendo arquivos temporários, definido pela diretiva scgi_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:

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

location /fetch/ {
    internal;

    scgi_pass         backend:9000;
    ...

    scgi_store        on;
    scgi_store_access user:rw group:rw all:r;
    scgi_temp_path    /data/temp;

    alias             /data/www/;
}

scgi_store_access#

Sintaxe

scgi_store_access users:permissions ...;

Padrão

scgi_store_access user:rw;

Contexto

http, server, location

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

scgi_store_access user:rw group:rw all:r;

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

scgi_store_access group:rw all:r;

scgi_temp_file_write_size#

Sintaxe

scgi_temp_file_write_size size;

Padrão

scgi_temp_file_write_size 8k|16k;

Contexto

http, server, location

Limita o tamanho dos dados escritos em um arquivo temporário por vez, quando o buffering de respostas do servidor SCGI para arquivos temporários está habilitado. Por padrão, o tamanho é limitado por dois buffers definidos pelas diretivas scgi_buffer_size e scgi_buffers. O tamanho máximo de um arquivo temporário é definido pela diretiva scgi_max_temp_file_size.

scgi_temp_path#

Sintaxe

scgi_temp_path path [level1 [level2 [level3]]]`;

Padrão

scgi_temp_path scgi_temp; (o caminho depende da --http-scgi-temp-path opção de build)

Contexto

http, server, location

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

scgi_temp_path /spool/angie/scgi_temp 1 2;

um arquivo temporário pode parecer com isto:

/spool/angie/scgi_temp/7/45/00000123457

Veja também o parâmetro use_temp_path da diretiva scgi_cache_path.