3
respostas

Error page não funcionou

Ao configurar a error_page do segundo server, não funcionou. Coloquei caminho absoluto e acaba gerando erro 302, não gera erro 404. Alguma ideia do que aconteceu? Alguma ideia?

3 respostas

Olá, João. Tudo bem?

Compartilha o seu projeto aqui com a gente, ou os códigos dos arquivos correspondentes, assim consigo testar e elaborar uma resposta mais assertiva.

Sigo aguardando.

Esta é a configuração principal - nginx.conf:

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       8080;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    include c:/dev/nginx-1.26.2/servers/*.conf;

}

Nessa pasta servers, tenho o arquivo default.conf, que configura o segundo server, eis seu conteúdo:

server {
    listen 9090;
    server_name localhost;

    location / {
        root c:/dev/html;
        index index.html index.htm;
    }
    error_page 404 c:/dev/html/404.html;
    location = c:/dev/html/404.html {
        root html;
    }
    error_page 500 502 503 504 c:/dev/html/50x.html;
}

Olá, João.

O erro "ERR_UNSAFE_REDIRECT" pode estar ocorrendo devido a um problema na forma como o Nginx está configurado para lidar com páginas de erro. Há algumas questões na sua configuração que precisam ser ajustadas para redirecionar corretamente para a página de erro 404.

Aqui estão os pontos principais a ajustar:

Corrigir o caminho do arquivo: Na configuração do Nginx, a diretiva root especifica o caminho base para os arquivos. Quando você especifica location utilizando o caminho absoluto, pode causar problemas. O correto seria usar um caminho relativo à diretiva root.

Configuração correta de error_page: O Nginx trata páginas de erro de maneira diferente. Em vez de apontar para um caminho absoluto dentro da diretiva error_page, você deve usar um caminho relativo, pois o root já especifica onde os arquivos HTML estão localizados.

server {
    listen 9090;
    server_name localhost;

    location / {
        root c:/dev/html;
        index index.html index.htm;
    }

    # Mapeamento para a página de erro 404
    error_page 404 /404.html;

    location = /404.html {
        root c:/dev/html;
    }

    # Páginas de erro 500, 502, 503, 504
    error_page 500 502 503 504 /50x.html;

    location = /50x.html {
        root c:/dev/html;
    }
}

Qualquer dúvida manda aqui. Bons estudos.