SSI#
O módulo é um filtro que processa comandos SSI (Server Side Includes) em respostas que passam por ele.
Exemplo de Configuração#
location / {
ssi on;
# ...
}
Diretivas#
ssi#
Habilita ou desabilita o processamento de comandos SSI em respostas.
ssi_last_modified#
Permite preservar o campo de cabeçalho Last-Modified da resposta original durante o processamento SSI para facilitar o cache de resposta.
Por padrão, o campo de cabeçalho é removido pois o conteúdo da resposta é modificado durante o processamento e pode conter elementos gerados dinamicamente ou partes que são alteradas independentemente da resposta original.
ssi_min_file_chunk#
Define o tamanho mínimo para partes de uma resposta armazenada em disco, a partir do qual faz sentido enviá-las usando sendfile.
ssi_silent_errors#
Se habilitado, suprime a saída da string "[an error occurred while processing the directive]" se um erro ocorreu durante o processamento SSI.
ssi_types#
Habilita o processamento de comandos SSI em respostas com os tipos MIME especificados além de text/html. O valor especial "*" corresponde a qualquer tipo MIME.
ssi_value_length#
Define o comprimento máximo dos valores de parâmetros em comandos SSI.
Comandos SSI#
Os comandos SSI têm o seguinte formato genérico:
<!--# command parameter1=value1 parameter2=value2 ... -->
Os seguintes comandos são suportados:
block#
Define um bloco que pode ser usado como um stub no comando include. O bloco pode conter outros comandos SSI. O comando tem o seguinte parâmetro:
name#
nome do bloco.
Exemplo:
<!--# block name="one" -->
stub
<!--# endblock -->
config#
Define alguns parâmetros usados durante o processamento SSI, especificamente:
errmsg#
uma string que é exibida se um erro ocorre durante o processamento SSI. Por padrão, a seguinte string é exibida:
`[an error occurred while processing the directive]`
timefmt#
uma string de formato passada para a função strftime() usada para exibir data e hora. Por padrão, o seguinte formato é usado:
`"%A, %d-%b-%Y %H:%M:%S %Z"`
O formato "%s" é adequado para exibir tempo em segundos.
echo#
Exibe o valor de uma variável. O comando tem os seguintes parâmetros:
var#
o nome da variável.
encoding#
o método de codificação. Os valores possíveis incluem none, url, e entity. Por padrão, entity é usado.
default#
um parâmetro não-padrão que define uma string a ser exibida se uma variável não estiver definida. Por padrão, (none) é exibido.
O comando
<!--# echo var="name" default="no" -->
substitui a seguinte sequência de comandos:
<!--# if expr="$name" --><!--# echo var="name" --><!--#
else -->no<!--# endif -->
if#
Executa uma inclusão condicional. Os seguintes comandos são suportados:
<!--# if expr="..." -->
...
<!--# elif expr="..." -->
...
<!--# else -->
...
<!--# endif -->
Apenas um nível de aninhamento é atualmente suportado. O comando tem o seguinte parâmetro:
expr#
expressão. Uma expressão pode ser:
verificação de existência de variável:
<!--# if expr="$name" -->
comparação de uma variável com um texto:
<!--# if expr="$name = text" -->
<!--# if expr="$name != text" -->
comparação de uma variável com uma expressão regular:
<!--# if expr="$name = /text/" -->
<!--# if expr="$name != /text/" -->
Se um text contém variáveis, seus valores são substituídos. Uma expressão regular pode conter capturas posicionais e nomeadas que podem ser usadas posteriormente através de variáveis, por exemplo:
<!--# if expr="$name = /(.+)@(?P<domain>.+)/" -->
<!--# echo var="1" -->
<!--# echo var="domain" -->
<!--# endif -->
include#
Inclui o resultado de outra requisição em uma resposta. O comando tem os seguintes parâmetros:
file#
especifica um arquivo incluído, por exemplo:
<!--# include file="footer.html" -->
virtual#
especifica uma requisição incluída, por exemplo:
<!--# include virtual="/remote/body.php?argument=value" -->
Várias requisições especificadas em uma página e processadas por servidores proxy ou FastCGI/uwsgi/SCGI/gRPC executam em paralelo. Se o processamento sequencial for desejado, o parâmetro wait deve ser usado.
stub#
um parâmetro não-padrão que nomeia o bloco cujo conteúdo será exibido se a requisição incluída resultar em um corpo vazio ou se um erro ocorrer durante o processamento da requisição, por exemplo:
<!--# block name="one" --> <!--# endblock -->
<!--# include virtual="/remote/body.php?argument=value" stub="one" -->
O conteúdo do bloco de substituição é processado no contexto da requisição incluída.
wait#
um parâmetro não-padrão que instrui a aguardar que uma requisição seja completamente finalizada antes de continuar com o processamento SSI, por exemplo:
<!--# include virtual="/remote/body.php?argument=value" wait="yes" -->
set#
um parâmetro não-padrão que instrui a escrever um resultado bem-sucedido do processamento da requisição na variável especificada, por exemplo:
<!--# include virtual="/remote/body.php?argument=value" set="one" -->
O tamanho máximo da resposta é definido pela diretiva subrequest_output_buffer_size:
location /remote/ {
subrequest_output_buffer_size 64k;
# ...
}
set#
Define um valor de uma variável. O comando tem os seguintes parâmetros:
var#
o nome da variável.
value#
o valor da variável. Se um valor atribuído contém variáveis, seus valores são substituídos.
Variáveis Integradas#
$date_gmt#
horário atual em GMT. O formato é definido pelo comando config com o parâmetro timefmt.
$date_local#
horário atual no fuso horário local. O formato é definido pelo comando config com o parâmetro timefmt.