Como redirecionar de forma transparente um usuário sem reescrever o URL quando a página não existe?

1

Eu tenho um aplicativo da web de nó com o nginx agindo como um proxy.

Este é o bloco server para esse site:

server {
        listen 80;

        server_name subdomain.example.org;

        location / {
                # Offline handling
                error_page https://example.org/502

                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_set_header X-NginX-Proxy true;

                proxy_pass http://127.0.0.1:4567;
                proxy_redirect off;

                # Socket.io Support
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
        }
}

Se o aplicativo da web ficar inativo, a diretiva error_page enviará o usuário para fora do site, mas a URL acabará mudando. É possível enviar o usuário para esse site, mas manter o mesmo URL no navegador?

    
por Julian H. Lam 18.04.2014 / 02:38

1 resposta

1

Como o documento diz:

If there is no need to change URI during internal redirection it is possible to pass error processing into a named location:

location / {
    error_page 404 = @fallback; }

location @fallback { 
    proxy_pass http://backend;
}

Você também precisa colocar on na diretiva proxy_intercept_errors .

Além disso, para respeitar o formato de URL fornecido em seu exemplo ( https://example.org/502 ), tive que usar uma variável $folder .

Por fim, você terá que configurar a diretiva resolver .

Para concluir, você terá algo assim:

location / {
   proxy_intercept_errors on;
   error_page 404 = @fallback;
   proxy_pass        http://127.0.0.1:4567;
   ...
   ...
}

location @fallback {
   resolver 8.8.8.8;   # <-- Put your own DNS Server here
   set $folder "502";
   proxy_pass https://example.org/$folder/;
}
    
por 18.04.2014 / 03:39

Tags