Código de status na diretiva nginx try_files

5

É possível usar o código de status atual como um parâmetro em try_files ?

Por exemplo, tentamos fornecer uma resposta estática específica do host 503 ou um fallback em todo o servidor, caso não tenha sido encontrado:

error_page 503 @error503;

location @error503 {
    root /path_to_static_root/;
    try_files /$host/503.html /503.html =503;
}

Existem várias dessas diretivas, por isso seria conveniente fazer algo como:

error_page 404 @error
error_page 500 @error
error_page 503 @error

location @error {
    root /path_to_static_root/;
    try_files /$host/$status.html /$status.html =$status;
}

Mas a documentação Variáveis não lista nada que possamos usar para fazer isso.

É possível ou existe uma maneira alternativa de fazer isso?

    
por Hamish 08.06.2012 / 00:03

1 resposta

1

Seus exemplos têm loop infinito.

Provavelmente, você quer algo assim:

error_page 404 @error404;
error_page 500 @error500;
error_page 503 @error503;

location @error404 {
    root /path_to_static_root/;
    try_files /$host/404.html /404.html =404;
}

location @error500 {
    root /path_to_static_root/;
    try_files /$host/500.html /500.html =500;
}

location @error503 {
    root /path_to_static_root/;
    try_files /$host/503.html /503.html =503;
}

.. e funcionará mais rápido do que com variáveis.

FAQ do NGINX: Existe uma maneira apropriada de usar variáveis nginx para tornar seções mais curtas da configuração, usando-as como macros para fazer partes do trabalho de configuração como modelos?

Atualização:

O wiki da comunidade não é documentação. Da documentação oficial:

$status - response status (1.3.2, 1.2.2)

@ link

    
por 08.06.2012 / 13:54

Tags