Bem, se a pasta / usr / share / nginx / html não existisse, onde você colocou o arquivo de erro? Nginx serve arquivos de qualquer pasta que você gosta, você só tem que dizer qual deles. É por isso que você usa a diretiva raiz.
Então, crie a pasta / usr / share / nginx / html e coloque o arquivo lá ou coloque-o, por exemplo, / what / ever / folder e mude sua configuração para
error_page 404 /custom_404.html;
location = /custom_404.html {
root /what/ever/folder;
internal;
}
Simples, né?
OK, não é tão simples. Eu não acho que mudar sua configuração para um local nomeado ("@foo") mude qualquer coisa. O que você quis dizer com "comneting e restarting"? Reiniciando o nginx ou o django?
Você recebe algum erro ao recarregar sua configuração do nginx?
Você verificou se você realmente obteve um 404 quando seu projeto de django está inoperante? Eu tenho um proxy_pass na minha configuração para proxy de uma webcam. Quando esta webcam não está disponível, recebo um "502 Bad Gateway".
Se eu pegar com error_page 502 /error_page.html;
e
location = /error_page.html {
root /what/ever/folder;
}
meu arquivo de erro personalizado é exibido.