nginx error_page
devuelve la página correspondiente según el código de respuesta de error o especifica el código de respuesta
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;
}
respuesta
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
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
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
En nombre del servidor que no se ha actualizado, el
contenido original a.html
Visite http://192.168.243.129:8080/a.html en el navegador.
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,
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
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
si se especifica como 301
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