página de erro nginx e diretivas internas não funcionam como esperado

4

Gostaria de configurar meu servidor nginx para retornar uma página de erro específica nos códigos de status HTTP 50x, e gostaria que essa página ficasse indisponível por uma solicitação direta dos usuários (por exemplo, http // mysite / internalerror) .

Para isso, estou usando a diretiva internal do nginx, mas devo estar faltando alguma coisa, como quando eu coloquei essa diretiva no meu /internalerror location, o nginx retorna um erro 404 customizado (que nem é meu Página de erro 404) quando uma página falha.

Então, para resumir, aqui está o que parece acontecer:

  1. GET / Home
  2. o nginx passa a consulta para o Python
  3. Estou simulando um bug de aplicativo para obter o código de erro 502
  4. O nginx tenta retornar / InternalError de sua regra error_page
  5. por causa da regra internal , ele finalmente retorna a um código de erro 404 personalizado < - why? a documentação diz que as diretivas error_page não estão relacionadas com internal : link

Aqui está uma extração do nginx.conf com alguns comentários para apontar:

error_page  404 /NotFound;
error_page  500 502 503 504 =500 /InternalError; # HTTP 500 Error page declaration

location / {
    try_files /Maintenance.html $uri @pythonbackend;
}

location @pythonbackend {
    include uwsgi_params;
    uwsgi_pass unix:///tmp/uwsgi.sock;
}

location ~* \.(py|pyc)$ { # This internal location works OK and returns my own 404 error page
    internal;
}

location /__Maintenance.html { # This one also works fine
    internal;
}

location ~* /internalerror { # This one doesn't work and returns nginx's 404 error page when I trigger an error somewhere on my site
    internal;
}

Muito obrigado pela sua ajuda !!

    
por Romain 03.02.2011 / 00:48

1 resposta

2

Não há muito sentido em usar "~ *" para localização / internalerror, o local simples faria.

Você está recebendo 404 porque o arquivo / InternalError está faltando. Você pretendia atender a esses pedidos do backend do uwsgi?

    
por 01.02.2012 / 20:18