Saltar a contenido

fancyindex: Módulo Fancy Index de NGINX

Instalación

Puedes instalar este módulo en cualquier distribución basada en RHEL, incluyendo, pero no limitado a:

  • RedHat Enterprise Linux 7, 8, 9 y 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 y Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-fancyindex
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-fancyindex

Habilita el módulo añadiendo lo siguiente en la parte superior de /etc/nginx/nginx.conf:

load_module modules/ngx_http_fancyindex_module.so;

Este documento describe nginx-module-fancyindex v0.6.1 lanzado el 01 de marzo de 2026.


Módulo Fancy Index de Nginx

El módulo Fancy Index hace posible la generación de listados de archivos, como lo hace el módulo autoindex incorporado, pero añadiendo un toque de estilo. Esto es posible porque el módulo permite un cierto grado de personalización del contenido generado:

  • Encabezados personalizados, ya sean locales o almacenados de forma remota.
  • Pies de página personalizados, ya sean locales o almacenados de forma remota.
  • Añadir tus propias reglas de estilo CSS.
  • Permitir elegir ordenar los elementos por nombre (predeterminado), tiempo de modificación o tamaño; tanto en orden ascendente (predeterminado) como descendente.

Este módulo está diseñado para trabajar con Nginx, un servidor web de alto rendimiento de código abierto escrito por Igor Sysoev.

Requisitos

CentOS, RHEL, Fedora Linux

Para los usuarios del repositorio estable oficial de Nginx, está disponible un repositorio de paquetes extra con módulos dinámicos y fancyindex está incluido.

Instala la configuración del repositorio y luego el paquete del módulo:

yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install nginx-module-fancyindex

Luego carga el módulo en /etc/nginx/nginx.conf usando:

load_module "modules/ngx_http_fancyindex_module.so";

macOS

Los usuarios pueden instalar Nginx en macOS con MacPorts; fancyindex está incluido:

sudo port install nginx

Otras plataformas

En la mayoría de los otros casos necesitarás las fuentes de Nginx. Cualquier versión a partir de la serie 0.8 debería funcionar.

Para utilizar las directivas fancyindex_header_ y fancyindex_footer_ también necesitarás el ngx_http_addition_module integrado en Nginx.

Construcción

  1. Descomprime las fuentes de Nginx:

    $ gunzip -c nginx-?.?.?.tar.gz | tar -xvf -
    
  2. Descomprime las fuentes para el módulo de indexación fancy:

    $ gunzip -c nginx-fancyindex-?.?.?.tar.gz | tar -xvf -
    
  3. Cambia al directorio que contiene las fuentes de Nginx, ejecuta el script de configuración con las opciones deseadas y asegúrate de poner una bandera --add-module apuntando al directorio que contiene la fuente del módulo de indexación fancy:

    $ cd nginx-?.?.?
    $ ./configure --add-module=../nginx-fancyindex-?.?.? \
       [--with-http_addition_module] [opciones adicionales deseadas]
    

    Desde la versión 0.4.0, el módulo también puede ser construido como un módulo dinámico, usando --add-dynamic-module=… en su lugar y load_module "modules/ngx_http_fancyindex_module.so"; en el archivo de configuración.

  4. Construye e instala el software:

    $ make
    

    Y luego, como root:

    # make install
    
  5. Configura Nginx utilizando las directivas de configuración de los módulos.

Ejemplo

Puedes probar el estilo predeterminado incorporado añadiendo las siguientes líneas en una sección server en tu archivo de configuración de Nginx:

location / {
  fancyindex on;              # Habilitar índices fancy.
  fancyindex_exact_size off;  # Salida de tamaños de archivo legibles por humanos.
}

Temas

Los siguientes temas demuestran el nivel de personalización que se puede lograr utilizando el módulo:

  • Tema por @TheInsomniac. Usa encabezado y pie de página personalizados.
  • Tema por @Naereen. Usa encabezado y pie de página personalizados. El encabezado incluye un campo de búsqueda para filtrar por nombre de archivo usando JavaScript.
  • Tema por @fraoustin. Tema responsivo usando elementos de Material Design.
  • Tema por @alehaa. Tema simple y plano basado en Bootstrap 4 y FontAwesome.

Directivas

fancyindex

Sintaxis
fancyindex [on | off]

Predeterminado
fancyindex off

Contexto
http, server, location

Descripción
Habilita o deshabilita índices de directorios fancy.

fancyindex_default_sort

Sintaxis
fancyindex_default_sort [name | size | date | name_desc | size_desc | date_desc]

Predeterminado
fancyindex_default_sort name

Contexto
http, server, location

Descripción
Define el criterio de ordenación por defecto.

fancyindex_case_sensitive

Sintaxis
fancyindex_case_sensitive [on | off]

Predeterminado
fancyindex_case_sensitive on

Contexto
http, server, location

Descripción
Si está habilitado (configuración predeterminada), la ordenación por nombre será sensible a mayúsculas y minúsculas. Si está deshabilitado, se ignorará el caso al ordenar por nombre.

fancyindex_directories_first

Sintaxis
fancyindex_directories_first [on | off]

Predeterminado
fancyindex_directories_first on

Contexto
http, server, location

Descripción
Si está habilitado (configuración predeterminada), agrupa los directorios y los ordena antes que todos los archivos regulares. Si está deshabilitado, los directorios se ordenan junto con los archivos.

fancyindex_css_href

Sintaxis
fancyindex_css_href uri

Predeterminado
fancyindex_css_href ""

Contexto
http, server, location

Descripción
Permite insertar un enlace a una hoja de estilo CSS en los listados generados. El parámetro uri proporcionado se insertará tal cual en una etiqueta <link> HTML. El enlace se inserta después de las reglas CSS incorporadas, por lo que puedes sobrescribir los estilos predeterminados.

fancyindex_exact_size

Sintaxis
fancyindex_exact_size [on | off]

Predeterminado
fancyindex_exact_size on

Contexto
http, server, location

Descripción
Define cómo representar los tamaños de archivo en el listado de directorios: ya sea de manera precisa, o redondeando al kilobyte, megabyte y gigabyte.

Sintaxis
fancyindex_footer path [subrequest | local]

Predeterminado
fancyindex_footer ""

Contexto
http, server, location

Descripción
Especifica qué archivo debe insertarse al pie de los listados de directorios. Si se establece en una cadena vacía, se enviará el pie de página predeterminado proporcionado por el módulo. El parámetro opcional indica si el path debe ser tratado como una URI para cargar usando un subrequest (el predeterminado), o si se refiere a un archivo local.

nota

Usar esta directiva requiere el ngx_http_addition_module_ integrado en Nginx.

advertencia

Al insertar un encabezado/pie de página personalizado, se emitirá un subrequest, por lo que potencialmente cualquier URL puede ser utilizada como fuente para ellos. Aunque funcionará con URLs externas, solo se admiten las internas. Las URLs externas no han sido probadas y su uso hará que Nginx se bloquee mientras espera que se complete el subrequest. Si sientes que un encabezado/pie de página externo es imprescindible para ti, por favor házmelo saber.

fancyindex_header

Sintaxis
fancyindex_header path [subrequest | local]

Predeterminado
fancyindex_header ""

Contexto
http, server, location

Descripción
Especifica qué archivo debe insertarse en la parte superior de los listados de directorios. Si se establece en una cadena vacía, se enviará el encabezado predeterminado proporcionado por el módulo. El parámetro opcional indica si el path debe ser tratado como una URI para cargar usando un subrequest (el predeterminado), o si se refiere a un archivo local.

nota

Usar esta directiva requiere el ngx_http_addition_module_ integrado en Nginx.

fancyindex_show_path

Sintaxis
fancyindex_show_path [on | off]

Predeterminado
fancyindex_show_path on

Contexto
http, server, location

Descripción
Si se debe o no mostrar la ruta y la etiqueta de cierre \</h1> después del encabezado. Esto es útil cuando deseas manejar la visualización de la ruta con un script PHP, por ejemplo.

advertencia

Esta directiva solo se puede desactivar si se proporciona un encabezado personalizado usando fancyindex_header.

fancyindex_show_dotfiles

Sintaxis
fancyindex_show_dotfiles [on | off]

Predeterminado
fancyindex_show_dotfiles off

Contexto
http, server, location

Descripción
Si se deben listar los archivos que están precedidos por un punto. La convención normal es ocultar estos.

fancyindex_ignore

Sintaxis
fancyindex_ignore string1 [string2 [... stringN]]

Predeterminado
Sin predeterminado.

Contexto
http, server, location

Descripción
Especifica una lista de nombres de archivos que no se mostrarán en los listados generados. Si Nginx fue construido con soporte para PCRE, las cadenas se interpretan como expresiones regulares.

Sintaxis
fancyindex_hide_symlinks [on | off]

Predeterminado
fancyindex_hide_symlinks off

Contexto
http, server, location

Descripción
Cuando está habilitado, los listados generados no contendrán enlaces simbólicos.

fancyindex_hide_parent_dir

Sintaxis
fancyindex_hide_parent_dir [on | off]

Predeterminado
fancyindex_hide_parent_dir off

Contexto
http, server, location

Descripción
Cuando está habilitado, no mostrará el directorio padre.

fancyindex_localtime

Sintaxis
fancyindex_localtime [on | off]

Predeterminado
fancyindex_localtime off

Contexto
http, server, location

Descripción
Habilita mostrar los tiempos de archivo como hora local. El valor predeterminado es “off” (hora GMT).

fancyindex_time_format

Sintaxis
fancyindex_time_format string

Predeterminado
fancyindex_time_format "%Y-%b-%d %H:%M"

Contexto
http, server, location

Descripción
Cadena de formato utilizada para las marcas de tiempo. Los especificadores de formato son un subconjunto de los soportados por la función strftime, y el comportamiento es independiente de la configuración regional (por ejemplo, los nombres de días y meses siempre están en inglés). Los formatos soportados son:

  • %a: Nombre abreviado del día de la semana.
  • %A: Nombre completo del día de la semana.
  • %b: Nombre abreviado del mes.
  • %B: Nombre completo del mes.
  • %d: Día del mes como un número decimal (rango 01 a 31).
  • %e: Como %d, el día del mes como un número decimal, pero un cero inicial se reemplaza por un espacio.
  • %F: Equivalente a %Y-%m-%d (el formato de fecha ISO 8601).
  • %H: Hora como un número decimal usando un reloj de 24 horas (rango 00 a 23).
  • %I: Hora como un número decimal usando un reloj de 12 horas (rango 01 a 12).
  • %k: Hora (reloj de 24 horas) como un número decimal (rango 0 a 23); los dígitos únicos son precedidos por un espacio.
  • %l: Hora (reloj de 12 horas) como un número decimal (rango 1 a 12); los dígitos únicos son precedidos por un espacio.
  • %m: Mes como un número decimal (rango 01 a 12).
  • %M: Minuto como un número decimal (rango 00 a 59).
  • %p: Ya sea "AM" o "PM" según el valor de tiempo dado.
  • %P: Como %p pero en minúsculas: "am" o "pm".
  • %r: Hora en notación a.m. o p.m. Equivalente a %I:%M:%S %p.
  • %R: Hora en notación de 24 horas (%H:%M).
  • %S: Segundo como un número decimal (rango 00 a 60).
  • %T: Hora en notación de 24 horas (%H:%M:%S).
  • %u: Día de la semana como un decimal, rango 1 a 7, siendo el lunes 1.
  • %w: Día de la semana como un decimal, rango 0 a 6, siendo el lunes 0.
  • %y: Año como un número decimal sin un siglo (rango 00 a 99).
  • %Y: Año como un número decimal incluyendo el siglo.

GitHub

Puedes encontrar consejos de configuración adicionales y documentación para este módulo en el repositorio de GitHub para nginx-module-fancyindex.