Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

160
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!