Estou usando o nginx como um proxy reverso para procurar conteúdo html do memcached, se não presente, depois node.js, se não estiver lá, node.js retorna 404.
O que eu estou tentando fazer é interceptar e entregar uma página personalizada para o 404 retornado por node.js
O problema é que o nginx não retorna o 404.html correto, mas é o padrão.
Então, enquanto eu posso interceptar a página 404, o nginx entrega a página de erro padrão, não 404.html
upstream memcached {
server 127.0.0.1:11211;
}
error_page 404 /404.html;
location /404.html {
internal;
}
location @memcached {
...
if ($memcached_request = 1) {
memcached_pass memcached;
error_page 404 502 504 = @nodejs;
}
if ($memcached_request = 0) {
error_page 404 502 504 = @nodejs;
}
}
location @nodejs {
proxy_pass http://127.0.0.1:7777;
...
error_page 404 /404.html;
proxy_intercept_errors on;
proxy_redirect off;
}
location / {
try_files $uri $uri/ @memcached;
error_page 403 = @nodejs;
}
Existe uma maneira melhor de fazer isso "se não estiver no memcached, vá para node.js", em vez da error_page 404 = @fallback?
Se não, existe uma maneira de pegar o 404 do último backend?