Tengo nginx 0.8.53 configurado con algunos hosts virtuales que funcionan como yo quiero. Sin embargo, debido a la 'mejor coincidencia' de nginx en los hosts virtuales, necesito agregar un host predeterminado para capturar todas las solicitudes que no sean para un host virtual específico. Me gustaría que el host predeterminado devuelva una página 404 que no indique que estoy ejecutando nginx 0.8.53.Cómo hacer que nginx siempre devuelva un 404 personalizado para el host predeterminado
Supuse que debería ser algo como:
# The default server.
#
server {
listen 80 default_server;
server_name everythingelse;
# Everything is a 404
location/{
return 404;
}
error_page 404 /opt/local/html/404.html;
}
Pero esto sigue devolviendo la página por defecto nginx 404 que tiene el número de versión .. Parece que el 'retorno 404' ignora la configuración 'error_page' ..
Su código le dará la página por defecto 404 que dice que no quiere (y ya recibe de todos modos) y en segundo lugar , la directiva error_page le permite especificar una página de error personalizada. De hecho, "error_page 404/404.html "simplemente significa usar el archivo 404.html (archivo predeterminado 404) en la carpeta de instalación de nginx. Esto también puede ser" error_page 404 /path/to/any/other/404.html "Alternativamente, podría cambiar el archivo predeterminado – Dayo
La página 404 predeterminada no es un archivo en absoluto, y la página de error * no * toma una ruta del sistema de archivos. Redirige internamente al uri dado, por lo que busca a /404.html. Puede ser necesario agregar location = /404.html {internal;} o similar para evitar que se muestre la página predeterminada 404, ahora que lo pienso, porque el redireccionamiento interno terminará de nuevo en la ubicación/y no estoy seguro de cuál es la devolución 404 ; lo hará allí sin recursive_error_pages on; (que de todos modos sería malo). – kolbyjack
"La página 404 predeterminada no es un archivo en absoluto" es incorrecta. Puede encontrarla en la carpeta/usr/share/nginx/html/(en redhat: puede ser diferente para los demás). La directiva error_page toma un uri que puede estar debajo de la raíz web o alias como necesario. – Dayo