NGINX retorna os cabeçalhos corretos com documentos de erro personalizados

5

Eu configurei o NGINX para retornar documentos de erro personalizados para o meu servidor proxy, ele mostra o arquivo correto, mas sempre retorna um 200 OK header.

A configuração relevante do NGINX é

server {
    listen       94.23.155.32:80;
    server_name  rmg.io www.rmg.io;

    proxy_intercept_errors on;

    location / {
        proxy_pass http://rmgshort/;
    }

    error_page 404 = /error/404.html;
error_page 500 501 502 503 503 = /error/500.html;

    location /error/ {
        root /var/rmg/;
    }
}

Você pode testar isso se quiser, esta página deve retornar um erro 404, ele retorna o documento correto, mas altera o código de status para '200 OK' (cabeçalhos HTTP de teste aqui ), se eu substituir root /var/rmg/ por internal; , o cabeçalho correto será retornado, mas minha página de erro personalizada não funcionará.

Como obtenho o NGINX para retornar meu documento de erro personalizado com o cabeçalho de status correto?

Estou executando o NGINX 1.0.4 no RHEL 6.1

    
por Smudge 30.07.2011 / 13:57

1 resposta

12

Elimine o = da diretiva error_page ; você pode especificar qualquer código de retorno que você gostar com =NNN (ex. =401 ), mas se você der um = significa "use o código de erro do manipulador de erro", que para um arquivo estático sempre será " 200 OK ". Sem = , você receberá o código de erro original retornado.

Irritantemente, uma leitura direta do manual (de outra forma) excelente (no momento em que escrevo esta resposta, de qualquer forma ) pode fazer você pensar que é o contrário ( = mantém o código de retorno original), mas testes locais indicam que ele funciona da maneira que descrevi acima.

    
por 30.07.2011 / 14:22

Tags