Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

162
Vistas
renderizar 404 personalizado en nginx o algo más si 404 no existe

Me gustaría alojar archivos HTML cargados por los usuarios y necesito mostrar un 404 personalizado si lo proporcionaron, o mostrar mi propio 404 de lo contrario.

Ejemplo de flujo de trabajo:

  1. el visitante intenta acceder a example.com/pages/page1.html
  2. pages/page1.html no existe pero $user ha subido 404.html así que muéstralo
  3. $user no ha proporcionado 404.html , así que mostraré un mensaje simple yo mismo

Hasta ahora he cubierto los pasos 1 y 2, pero no puedo hacer la lógica para el último.

Mi configuración /simplificada/:

 # each user has their own storage path etc # just to illustrate map $host $user { dog.example.com group/1/2/3; cat.example.com group/4/5/1; dog-want-cookie.example.com group/9/9/9; } server { listen 8000; server_name ~^(?<vhost>[^.]*)\.example\.com$; root /sites/$user; location / { try_files $uri $uri/index.html @not_found; } location @not_found { internal; error_page 404 /404.html; } }

No estoy seguro de dónde "invocar" una configuración para mi propia "página" de error.

 location @my404 { return 404 "Page not found."; }

Estoy usando Nginx 1.19.3 en Debian.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Use error_page para invocar la ubicación nombrada en lugar de try_files . Vea este documento para más detalles.

Por ejemplo:

 error_page 404 @not_found; location / { try_files $uri $uri/index.html =404; }

Use try_files para probar la existencia del archivo 404.html .

Por ejemplo:

 location @not_found { try_files /404.html /fallback404.html =404; }

No es necesario marcar las ubicaciones con nombre como internal , ya que no se puede acceder a ellas desde el exterior.

En el ejemplo anterior, el archivo fallback404.html está en la misma raíz del documento. El =404 es necesario para la sintaxis, pero nunca se alcanza porque el segundo archivo siempre existe. Vea este documento para más detalles.


Para usar un archivo 404.html de respaldo en una raíz de documento diferente, puede conectar en cascada dos ubicaciones con nombre.

Por ejemplo:

 location @not_found { try_files /404.html @fallback; } location @fallback { root /path/to/fallback/files; try_files /404.html =404; }

Como alternativa, puede reemplazar el contenido de la ubicación @fallback con su declaración de return .

Por ejemplo:

 location @fallback { return 404 "Page not found."; }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda