nginx-error_page

nginx error_page
devuelve la página correspondiente según el código de respuesta de error o especifica el código de respuesta
Inserte la descripción de la imagen aquí

error_page + notfound_uri
示例 :

server {
    
    
    listen         80;
    server_name    www.a.com;
    root           /data/nginx/domain1;
    location      ~ /images/  {
    
    

        root          /data/nginx/test1;
        error_page    404   /notfound.html;

    }
    location       /   {
    
    

        root           /data/nginx/test;
        error_page     404  /notfound.html;


    }
}

Primero cree notfound.html en los dos directorios raíz

echo "/data/nginx/images/notfound.html" > /data/nginx/images/notfound.html
echo "/data/nginx/test1/notfound.html"  > /data/nginx/test1/notfound.html

Luego visite el navegador para que coincida con el a.html
www.a.com/a.html que no existe en las dos raíces.

location       /   {
    
    

        root           /data/nginx/test;
        error_page     404  /notfound.html;


    }

respuestaInserte la descripción de la imagen aquí

Cuando el navegador accede a
http://www.a.com/images/a.html
coincide con

 location      ~ /images/  {
    
    

        root          /data/nginx/test1;
        error_page    404   /notfound.html;

    }

Respuesta Se
Inserte la descripción de la imagen aquí
puede ver que aunque la ubicación no coincide, responde al mismo notfound.html. La razón es que cuando visita http://www.a.com/images/a.html uri = / images / a.html , devuelve 404 y uri = / notfound.html URL completa = http: // www. a.com /notfound.html para que coincida

location       /   {
    
    

        root           /data/nginx/test;
        error_page     404  /notfound.html;


    }

Luego responde con /data/nginx/test/notfound.html.

Para evitar que el navegador intercepte la página de error, puede especificar un código de respuesta como 404 y 200 en las dos ubicaciones.

location       /   {
    
    

        root           /data/nginx/test;
        error_page     404  =200 /notfound.html;


    }

Como se muestra
Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

error_page + ubicación @

Cuando se actualiza parte del servicio y se informa de un error al acceder a una determinada página, para no afectar la experiencia del cliente, la página se envía al servidor no actualizado.
La configuración es la siguiente:

server {
    
    
    listen          8080;
    error_log       /var/log/nginx/domain2_error.log;
    location       /  {
    
    
        root        /data/nginx/domain2;
        error_page  404  @fallback;

    }
    location      @fallback {
    
    

        proxy_pass http://192.168.243.129:8081;

    }
}

Trabajo preparatorio, cree el directorio raíz del host virtual 192.168.243.129:8080, escriba index.html para probar que el sitio web es normal.
Cree el host virtual 192.168.243.129:8080 y su directorio raíz, escriba index.html y a.html .
Como se muestra en la figura siguiente,
representa el servidor actualizado
Inserte la descripción de la imagen aquí

En nombre del servidor que no se ha actualizado, el
Inserte la descripción de la imagen aquí
contenido original a.html
Inserte la descripción de la imagen aquí

Visite http://192.168.243.129:8080/a.html en el navegador.
Inserte la descripción de la imagen aquí
Como se puede ver en la imagen, aunque acceder a http://192.168.243.129:8080/a.html informa un error 404, la página salta a 192.168.243.129: 8081 / a.html respondió a la página correcta.
Para evitar que los clientes perciban este error, puede mantener el código de error coherente con el servidor back-end y configurarlo como

server {
    
    
    listen          8080;
    error_log       /var/log/nginx/domain2_error.log;
    location       /  {
    
    
        root        /data/nginx/domain2;
        error_page  404 =  @fallback;

    }
    location      @fallback {
    
    

        proxy_pass http://192.168.243.129:8081;

    }
}
~

El efecto es como se muestra en la figura,
Inserte la descripción de la imagen aquí
el error se define en el sitio web externo

Cuando se reporta el error de acceso, la página será redirigida a la red externa, y la
configuración es la siguiente:

server {
    
    

    listen                8082;
    location              /   {
    
    

        root              /data/nginx/domain4;
        error_page        404   http://www.baidu.com;

    }



}

Visite http://192.168.243.129:8082/a.html

Inserte la descripción de la imagen aquíSolo se admite la modificación del código de respuesta especificado 302 y 301, y la modificación de otros códigos de respuesta no tendrá efecto.
Por ejemplo:

server {
    
    

    listen                8082;
    location              /   {
    
    

        root              /data/nginx/domain4;
        error_page        404 =200  http://www.baidu.com;

    }



}

Vaya a visitar nuevamente, el código de respuesta sigue siendo 302
Inserte la descripción de la imagen aquí
si se especifica como 301
Inserte la descripción de la imagen aquí

200: Código de respuesta de salud
302: Redirección temporal
301: Redirección permanente
304: La caché del navegador no ha cambiado
404: Página no encontrada
403: Sin permiso, generalmente los usuarios de nginx no tienen permiso para acceder a los archivos

Supongo que te gusta

Origin blog.csdn.net/weixin_45937255/article/details/115324250
Recomendado
Clasificación