IBM HTTP Server ajuda: Diretrizes FastCGI

Diretivas FastCGI

FastCgiAccessChecker

A diretiva FastCgiAccessChecker é utilizada para definir um aplicativo FastCGI como um validador de acesso por diretório. A fase Apache Access precede a autenticação de usuário e assim a decisão de permitir (proibir) acesso ao recurso solicitado é baseado nos cabeçalhos HTTP enviados com o pedido. Autorizadores baseados em FastCGI são úteis principalmente quando existe um componente dinâmico para a decisão de validação de acesso como uma hora do dia ou se uma conta de domínio está atualizada.

Se o nome de arquivo do aplicativo FastCGI não possuir uma definição de servidor estática ou externa, ele é iniciado como o aplicativo FastCGI. Se o nome de arquivo não começar com uma barra (/), assume-se que ele seja relativo ao ServerRoot.

FastCgiAccessChecker é utilizado dentro de um contêiner de Diretório ou Localização.

<Directory htdocs/protected>
FastCgiAccessChecker fcgi-bin/access-checker
</Directory>

mod_fastcgi envia aproximadamente todas as variáveis de ambiente padrão geralmente disponíveis para identificadores de pedido CGI/FastCGI. Todos os cabeçalhos retornados por um aplicativo FastCGI access-checker com resposta bem sucedida (Status: 200) são passados para subprocessos (invocações CGI/FastCGI) como variáveis de ambiente. Todos os cabeçalhos retornados com resposta malsucedida são passados adiante para o cliente. Comportamento compatível com a especificação FastCGI pode ser obtido utilizando-se a opção "-compat".

mod_fastcgi define a variável de ambiente "FCGI_APACHE_ROLE" para "ACCESS_CHECKER" para indicar qual (específico para Apache) fase de autorizador está sendo realizada.

Respostas de falha personalizadas do aplicativo autorizador FastCGI não são suportadas. Consulte a diretiva ErrorDocument para uma solução alternativa (um aplicativo FastCGI pode servir o documento).

FastCgiAccessCheckerAuthoritative

Definir a diretiva FastCgiAccessCheckerAuthoritative explicitamente para Off permite que a verificação de acesso seja passada para módulos de nível inferior (conforme definido nos arquivos modules.c) se o aplicativo FastCGI falhar na permissão de acesso.

Por padrão, controle não é passado adiante e uma verificação de acesso falhada resultará em uma reporta de Proibição. Desativar o padrão deve ser cuidadosamente considerado.

FastCgiAuthenticator

A diretiva FastCgiAuthenticator é utilizada para definir um aplicativo FastCGI como uma autenticação por diretório. Autenticadores verificam se o solicitador é quem afirma ser correspondendo o nome de usuário e a senha fornecidos com a lista ou banco de dados de usuários e senhas conhecidos. Autenticadores baseados em FastCGI são úteis principalmente quando o banco de dados do usuário é mantido dentro de um programa independente ou está localizado em uma máquina diferente do servidor Web.

Se o nome de arquivo do aplicativo FastCGI não possuir uma definição de servidor estática ou externa, ele é iniciado como o aplicativo FastCGI. Se o nome de arquivo não começar com uma barra (/), assume-se que ele seja relativo ao ServerRoot.

FastCgiAuthenticator é utilizado dentro de contêiners de Diretório ou Localização e devem incluir uma diretiva AuthType e AuthName. Apenas o tipo de autenticação de usuário Básico é suportado. Ele deve estar acompanhado por um diretiva requer ou FastCgiAuthorizer para funcionar corretamente.

<Directory htdocs/protected>
AuthType Basic
AuthName ProtectedRealm
FastCgiAuthenticator fcgi-bin/authenticator
require valid-user
</Directory>

mod_fastcgi envia aproximadamente todas as variáveis de ambiente padrão geralmente disponíveis para identificadores de pedido CGI/FastCGI. Todos os cabeçalhos retornados por um aplicativo de autenticação FastCGI com resposta bem sucedida (Status: 200) são passados para subprocessos (invocações CGI/FastCGI) como variáveis de ambiente. Todos os cabeçalhos retornados com resposta malsucedida são passados adiante para o cliente. Comportamento compatível com a especificação FastCGI pode ser obtido utilizando-se a opção "-compat".

Mod_fastcgi define a variável de ambiente "FCGI_APACHE_ROLE" para "AUTHENTICATOR" para indicar qual fase do autorizador (específico para Apache) está sendo realizada.

Respostas de falha personalizadas do aplicativo autorizador FastCGI não são suportadas. Consulte a diretiva ErrorDocument, para verificar se existe uma alternativa (um aplicativo FastCGI pode atender o documento).

FastCgiAuthenticatorAuthoritative

Definir a diretiva FastCgiAuthenticatorAuthoritative explicitamente para Off permite que a autenticação seja passada para módulos de nível mais baixo (conforme definido nos arquivos de Configuração e modules.c) se o aplicativo FastCGI falhar na autenticação do usuário.

Uma utilização comum para isto é a interseção com um AuthUserFile bem protegido que contenha poucos usuários (relacionados a administração). 

Por padrão, controle não é passado adiante e um usuário desconhecido resultará em uma resposta de Autorização Necessária.  Desativar o padrão deve ser cuidadosamente considerado.

FastCgiAuthorizer

A diretriz FastCgiAuthorizer é utilizada para definir um aplicativo FastCGI como um autorizador por diretório.  Os autorizadores validam se um usuário autenticado tem permissão de acesso a um recurso solicitado.  Os autorizadores baseados em FastCGI são úteis principalmente quando existe um componente dinâmico para a decisão de autorização, como uma hora do dia ou se o usuário pagou ou não suas contas. 

Se o nome do arquivo do aplicativo FastCGI não possuir uma definição de servidor estática ou externa, ele é iniciado como o aplicativo FastCGI. Se o nome de arquivo não começar com uma barra (/), assume-se que ele seja relativo ao ServerRoot.

O FastCgiAuthorizer é utilizado nos contêineres Diretório ou Localização e deve incluir uma diretriz AuthType e AuthName. Ele deve ser acompanhado por uma diretriz de autenticação como FastCgiAuthenticator, AuthUserFile, AuthDBUserFile ou AuthDBMUserFile para funcionar corretamente.

.

<Directory htdocs/protected>
AuthType Basic
AuthName ProtectedRealm
AuthDBMUserFile conf/authentication-database
FastCgiAuthorizer fcgi-bin/authorizer
</Diretório>

mod_fastcgi envia aproximadamente todas as variáveis de ambiente geralmente disponíveis para identificadores de pedido CGI/FastCGI.  Todos os cabeçalhos retornados por um aplicativo de autenticação FastCGI com resposta bem sucedida (Status: 200) são passados para subprocessos (invocações CGI/FastCGI) como variáveis de ambiente. Todos os cabeçalhos retornados em uma resposta malsucedida são passados para o cliente.  Comportamento compatível com a especificação FastCGI pode ser obtido utilizando-se a opção "-compat".

Mod_fastcgi define a variável de ambiente "FCGI_APACHE_ROLE" como "AUTHORIZER" para indicar qual fase do autorizador (específica do Apache) está sendo executada.

Respostas de falha de personalização de aplicativos do autorizador FastCGI não são suportadas.  Consulte a diretiva ErrorDocument para uma solução alternativa (um aplicativo FastCGI pode servir o documento).

FastCgiAuthorizerAuthoritative

Definir a diretiva FastCgiAuthenticatorAuthoritative explicitamente para Off permite que a autenticação seja passada para módulos de nível mais baixo (conforme definido nos arquivos de Configuração e modules.c) se o aplicativo FastCGI falhar na autenticação do usuário.

Uma utilização comum para isto é a interseção com um AuthUserFile bem protegido que contenha poucos usuários (relacionados a administração). 

Por padrão, controle não é passado adiante e um usuário desconhecido resultará em uma resposta de Autorização Necessária.  Desativar o padrão deve ser cuidadosamente considerado.

FastCgiConfig

A diretiva FastCgiConfig define os parâmetros padrão para todos os aplicativos FastCGI. Esta diretiva não afeta aplicativos estáticos ou externos de maneira alguma.

Aplicativos dinâmicos não são iniciados na inicialização do servidor, mas sob demanda. Se a demanda for pesada, instâncias de aplicativos adicionais são iniciadas. A medida que a demanda for acabando, as instâncias de aplicativo são canceladas. Várias das opções governam este processo.

Opção pode ser (sem distinção de maiúsculas/minúsculas):

appConnTimeout n (0 segundos)
O número de segundos a ser aguardado para que uma conexão ao aplicativo FastCGI seja concluída ou 0 para indicar que bloqueamento connect() deve ser utilizado.  Se o tempo limite expirar, ocorre um  resultado SERVER_ERROR.  Para valores diferentes de zero, esta é a quantidade de tempo utilizada em select() para gravar ao descritor do arquivo retornado por um connect(). não bloqueador  Connect() não bloqueador causa problemas em algumas plataformas.  Veja também -idle-timeout, que produz resultados semelhantes, mas de maneira mais portátil.
idle-timeout n (30 segundos)
O número de segundos de inatividade do aplicativo FastCGI permitidos antes que o pedido seja abortado e o evento seja registrado em log (no LogLevel de erro). O temporizador de inatividade se aplica apenas se uma conexão estiver pendente com o aplicativo FastCGI.  Se um pedido for colocado em fila para um aplicativo, mas o aplicativo não responder (gravando ou esvaziando) dentro deste período, o pedido será abortado.  Se a comunicação for concluída com o aplicativo mas incompleta com o cliente (a resposta é colocada em buffer), o tempo limite não se aplica.
autoUpdate none
Esta opção faz com que o mod_fastcgi verifique a idade do aplicativo no disco antes de processar cada pedido.  Se o aplicativo for mais recente, o gerenciador de processo é notificado e todas as instâncias em execução do aplicativo são canceladas.  Geralmente, prefere-se que este tipo de funcionalidade seja interna ao aplicativo (por exemplo, a cada 100 pedidos é verificado se existe uma nova versão em disco e sai se houver).   Pode haver um problema pendente (bug) quando esta opção é utilizada com -restart.
gainValue n (0.5)
Um ponto flutuante entre 0 e 1 que é utilizado como um expoente na computação do fator de carga de vezes de conexão abandonadas exponencialmente dos aplicativos FastCGI atuais.  Valores antigos são escalados por (1 - gainValue), portanto, deixá-los menores deixa-os mais pesados na comparação com o valor atual, que é escalado por gainValue.
initial-env name[=value] none
Um par nome-valor a ser passado no ambiente inicial quando instâncias do aplicativo são executadas.  Para passar uma variável do ambiente Apache, não forneça o "=" (se a variável não estiver no ambiente, ela será definida sem um valor).  Para definir uma variável sem um valor, forneça o "=" sem um valor.  A opção pode ser utilizada repetidamente.
init-start-delay n (1 second)
O número mínimo de segundos entre a proliferação de instâncias deste aplicativo.   Este atraso diminui a demanda posicionada no sistema na inicialização do servidor.
killInterval n (300 segundos)
O killInterval determina a freqüência de implementação do critério de cancelamento da instância de aplicativo dinâmica dentro do gerenciador de processo.  Valores baixos resultam em um critério mais agressivo, valores altos em um critério menos agressivo.
listen-queue-depth n (100)
A profundidade da fila de escuta() (também denominada atraso) compartilhada por todas as instâncias deste aplicativo.  Uma fila de escuta mais profunda permite que o servidor lide com flutuações de carga transientes sem rejeitar pedidos; isto não aumenta o rendimento.   Incluir instâncias de aplicativos adicionais pode aumentar o rendimento/desempenho, dependendo do aplicativo e do host.
maxClassProcesses n (10)
O número máximo de instâncias de aplicativo FastCGI dinâmico permitido para execução para qualquer aplicativo FastCGI.
maxProcesses n (50)
O número máximo total de instâncias de aplicativo FastCGI dinâmico permitidas para execução a qualquer momento.
minProcesses n (5)
O número mínimo total de instâncias de aplicativo FastCGI dinâmico permitido para execução a qualquer momento sem ser cancelado pelo gerenciador de processo (devido à perda de demanda).
multiThreshhold n (50)
Um inteiro entre 0 e 100 utilizado para determinar se qualquer instância de um aplicativo FastCGI deve ser terminada.  Se o aplicativo possuir mais de uma instância em execução no momento, este atributo será utilizado para decidir se uma delas deve ser terminada.  Se apenas uma instância permanecer, singleThreshhold é utilizado.
pass-header header none
O nome de um Cabeçalho de Pedido HTTP para ser passado no ambiente request.  Esta opção torna disponível o conteúdo de cabeçalhos que geralmente não estão disponíveis (por exemplo, Autorização) para um ambiente CGI.
priority n (0)
A prioridade de processo a ser atribuída às instâncias de aplicativo (utilizando setpriority()).
processSlack n (5 segundos)
Se a soma de todos os aplicativos FastCGI dinâmicos atualmente em execução exceder o valor maxProcesses - processSlack, o gerenciador de processo invocará o critério de cancelamento.  Isto serve para melhorar o desempenho em cargas maiores cancelando algumas das  instâncias de aplicativo mais inativas antes de alcançar o valor maxProcesses.
restart none
Esta opção faz com que o gerenciador de processo reinicie aplicativos dinâmicos depois de uma falha (semelhante a aplicativos estáticos).
restart-delay n (5 segundos)
O número mínimo de segundos entre a nova execução de instâncias falhas do aplicativo.  Este atraso evita que um aplicativo interrompido ocupe muito do sistema.
singleThreshhold n (0)
Um número inteiro entre 0 e 100 utilizado para determinar se a última instância de um aplicativo FastCGI pode ser determinada.  Se fator de carga calculados pelo gerenciador de processo para o aplicativo for menor que o limite especificado, a última instância será terminada.   Para que suas executáveis sejam executadas no modo "inativo" por um período longo, você pode especificar um valor próximo de 1, entretanto se o tempo de memória ou CPU for importante, um valor próximo de 100 pode ser mais aplicável.  O valor 0 evitará que a última instância de um aplicativo seja terminada; este é o valor padrão, não é recomendado alterá-lo (especialmente se -appConnTimeout for definido).
startDelay n (3 segundos)
O número de segundos que o servidor Web aguarda enquanto tenta conectar a um aplicativo FastCGI dinâmico.  Se o intervalo expirar, o gerenciador de processo será notificado na expectativa que outra instância do aplicativo seja iniciada.  O valor startDelay deve ser menor que o valor appConnTimeout para ter efeito.
updateInterval n  (300 segundos)
O updateInterval determina a freqüência que a análise estatística é realizada para determinar o destino dos aplicativos FastCGI.

FastCgiExternalServer

appConnTimeout n (0 segundos)
O número de segundos a ser aguardado para que uma conexão ao aplicativo FastCGI seja concluída ou 0 para indicar que bloqueamento connect() deve ser utilizado.  Se o tempo limite expirar, ocorre um  resultado SERVER_ERROR.  Para valores diferentes de zero, esta é a quantidade de tempo utilizada em select() para gravar ao descritor do arquivo retornado por um connect(). não bloqueador  Connect() não bloqueador causa problemas em algumas plataformas.  Veja também -idle-timeout, que produz resultados semelhantes, mas de maneira mais portátil.
idle-timeout n (30 segundos)
O número de segundos de inatividade do aplicativo FastCGI permitidos antes que o pedido seja abortado e o evento seja registrado em log (no LogLevel de erro). O temporizador de inatividade se aplica apenas se uma conexão estiver pendente com o aplicativo FastCGI.  Se um pedido for colocado em fila para um aplicativo, mas o aplicativo não responder (gravando ou esvaziando) dentro deste período, o pedido será abortado.  Se a comunicação for concluída com o aplicativo mas incompleta com o cliente (a resposta é colocada em buffer), o tempo limite não se aplica.
flush none
Força uma gravação no cliente conforme os dados são recebidos do aplicativo.  Por padrão, mod_fastcgi faz buffer de dados para liberar o aplicativo o mais rápido possível.
host nome do host:porta none
O nome de host ou endereço IP e número de porta TCP (1-65535) que o aplicativo utiliza para comunicação com o servidor Web. As opções -socket e -host são mutuamente exclusivas.
Pass-header cabeçalho none
O nome de um Cabeçalho de Pedido HTTP para ser passado no ambiente request.  Esta opção torna disponível o conteúdo de cabeçalhos que geralmente não estão disponíveis (por exemplo, Autorização) para um ambiente CGI.
socket nome do arquivo none
UNIX: O nome de arquivo do soquete de domínio UNIX que o aplicativo utiliza para comunicação com o servidor Web.  O nome de arquivo é relativo ao FastCgiIpcDir.  As opções -socket e -port são mutuamente exclusivas.
Windows NT:  O nome do canal nomeado que o aplicativo utiliza para comunicação com o servidor Web. O nome é relativo ao FastCgiIpcDir.  As opções -socket e -port são mutuamente exclusivas.

FastCgiIpcDir

UNIX: A diretiva FastCgiIpcDir especifica diretório como o local para armazenar (e procurar, no caso de aplicativos externos FastCGI) os arquivos de soquete UNIX utilizados para comunicação entre os aplicativos e o servidor Web. Se o diretório não começar com uma barra (/), assume-se que ele seja relativo ao ServerRoot. Se o diretório não existir, é feita uma tentativa de criá-lo com as permissões apropriadas. Não especifique um diretório que não esteja em um sistema de arquivos local. Se você utilizar o diretório padrão (ou outro diretório dentro de /tmp), mod_fastcgi será quebrado, se seu sistema excluir periodicamente os arquivos de /tmp.

Windows NT: A diretiva FastCgiIpcDir especifica nome como a raiz para os canais nomeados utilizados para comunicação entre o aplicativo e o servidor Web. O nome deve estar no formato \\.\pipe\nome do canal A parte nome do canal pode conter qualquer caractere que não seja uma barra invertida.

A diretiva FastCgiIpcDir deve preceder qualquer diretiva FastCgiServer ou FastCgiExternalServer (que utiliza soquetes UNIX). O diretório deve ser legível, gravável e executável (pesquisável) pelo servidor Web, do contrário, não deve ser acessível para qualquer pessoa.

FastCgiServer

A diretiva FastCgiServer define nome do arquivo como o aplicativo FastCGI estático. Se o nome do arquivo não começar com uma barra (/), assume-se que ele seja relativo ao ServerRoot.

Por padrão, o Gerenciador de Processo iniciará uma instância do aplicativo com a configuração padrão especificada (em parênteses) abaixo. Se uma instância de aplicativo estática for cancelada por qualquer motivo, mod_fastcgi iniciará outra para substitui-la e registrará o evento em log (no LogLevel de aviso).

Opção pode ser (sem distinção de maiúsculas/minúsculas):

appConnTimeout n (0 segundos)
O número de segundos a ser aguardado para que uma conexão ao aplicativo FastCGI seja concluída ou 0 para indicar que bloqueamento connect() deve ser utilizado.  Se o tempo limite expirar, ocorre um  resultado SERVER_ERROR.  Para valores diferentes de zero, esta é a quantidade de tempo utilizada em select() para gravar ao descritor do arquivo retornado por um connect(). não bloqueador  Connect() não bloqueador causa problemas em algumas plataformas.  Veja também -idle-timeout, que produz resultados semelhantes, mas de maneira mais portátil.
idle-timeout n (30 segundos)
O número de segundos de inatividade do aplicativo FastCGI permitidos antes que o pedido seja abortado e o evento seja registrado em log (no LogLevel de erro). O temporizador de inatividade se aplica apenas se uma conexão estiver pendente com o aplicativo FastCGI.  Se um pedido for colocado em fila para um aplicativo, mas o aplicativo não responder (gravando ou esvaziando) dentro deste período, o pedido será abortado.  Se a comunicação for concluída com o aplicativo mas incompleta com o cliente (a resposta é colocada em buffer), o tempo limite não se aplica.
initial-env nome[=valor] none] none
Um par nome-valor a ser passado no ambiente  inicial do aplicativo do FastCGI.  Para passar uma variável do ambiente Apache, não forneça o "=" (se a variável não estiver no ambiente, ela será definida sem um valor).  Para definir uma variável sem um valor, forneça o "=" sem um valor.  A opção pode ser utilizada repetidamente.
init-start-delay n(1 second)
O número mínimo de segundos entre a proliferação de instâncias deste aplicativo.   Este atraso diminui a demanda posicionada no sistema na inicialização do servidor.
Flush none
Força uma gravação no cliente conforme os dados são recebidos do aplicativo.  Por padrão, mod_fastcgi faz buffer de dados para liberar o aplicativo o mais rápido possível.
Listen-queue-depth n (100)
A profundidade da fila de escuta() (também denominada atraso) compartilhada por todas as instâncias deste aplicativo.  Uma fila de escuta mais profunda permite que o servidor lide com flutuações de carga transientes sem rejeitar pedidos; isto não aumenta o rendimento.   Incluir instâncias de aplicativos adicionais pode aumentar o rendimento/desempenho, dependendo do aplicativo e do host.
Pass-header cabeçalho none
O nome de um Cabeçalho de Pedido HTTP para ser passado no ambiente request.  Esta opção torna disponível o conteúdo de cabeçalhos que geralmente não estão disponíveis (por exemplo, Autorização) para um ambiente CGI.
processes n (1)
O número de instâncias do aplicativo a ser proliferado na inicialização do servidor.
Priority n (0)
A prioridade de processo a ser atribuída às instâncias de aplicativo (utilizando setpriority()).
port n none
O número de porta TCP (1-65535) que o aplicativo utilizará para comunicação com o servidor Web.  Esta opção torna o aplicativo acessível a partir de outras máquinas na rede (bem como desta).  As opções -socket e -port são mutuamente exclusivas.
Restart-delay n (5 segundos)
O número mínimo de segundos entre a nova execução de instâncias falhas do aplicativo.  Este atraso evita que um aplicativo interrompido ocupe muito do sistema.
Socket nome do arquivo (gen'd)
UNIX: O nome do arquivo do soquete de domínio UNIX que o aplicativo utilizará para comunicação com o servidor Web.  O módulo cria o soquete dentro do diretório especificado por FastCgiIpcDir.  Esta opção torna o aplicativo disponível para outros aplicativos (por exemplo, cgi-fcgi) na mesma máquina ou através de uma definição de aplicativo FastCGI externa (FastCgiExternalServer).  Se nenhuma das opções, -socket e -port, forem fornecidas, o módulo gera um nome de arquivo de soquete de domínio UNIX.  As opções -socket e -port são mutuamente exclusivas.
Windows NT: O nome do canal nomeado que o aplicativo utilizará para comunicação com o servidor Web.  O módulo cria o canal nomeado a partir da raiz de canal nomeado especificada pelo FastCgilpcDir.  Esta opção torna o aplicativo disponível para outros aplicativos (por exemplo, cgi-fcgi) na mesma máquina ou através de uma definição de aplicativo FastCGI externa (FastCgiExternalServer).  Se nenhuma das opções, -socket e -port, forem fornecidas, o módulo gerará um nome para o canal nomeado.  As opções -socket e -port são mutuamente exclusivas.

 

FastCgiSuexec

A diretiva FastCgiSuexec é utilizada para ativar suporte para um suexec-wrapper.  FastCgiSuexec requer que suexec seja ativado no Apache (para CGI).  Para utilizar o mesmo suexec-wrapper em uso pelo Apache, defina FastCgiSuexec para On.  Para utilizar um suexec-wrapper diferente, especifique nome do arquivo do suexec-wrapper.  Se o nome do arquivo não começar com uma barra (/), assume-se que ele seja relativo ao ServerRoot.

Quando FastCgiSuexec está ativado, a localização de definições de aplicativos FastCGI estáticas ou externas é importante.  Elas herdam seus usuários e grupos das diretivas User e Group do servidor virtual em que são definidas.  As diretivas User e Group devem preceder definições de aplicativo FastCGI.  Note que isto não limita o aplicativo FastCGI para o servidor virtual em que são definidos, é permitido que o aplicativo ofereça serviços para pedidos a partir de qualquer servidor virtual com o mesmo usuário e grupo.  Se um pedido for recebido para um aplicativo FastCGI sem uma definição correspondente em execução com o usuário e grupo correto, uma instâncias dinâmica do aplicativo é iniciada com o usuário e grupo corretos.  Isto pode fazer com que várias cópias do mesmo aplicativo sejam executadas com diferentes usuário/grupo.  Se isto for um problema, impeça navegação para o aplicativo a partir de outros servidores virtuais ou configure os servidores virtuais com o mesmo Usuário e Grupo.

Veja mais informações sobre suexec na documentação do Apache (certifique-se de compreender completamente as implicações de segurança).

Informações relacionadas