Pular para conteúdo

fancyindex: Módulo Fancy Index do NGINX

Instalação

Você pode instalar este módulo em qualquer distribuição baseada em RHEL, incluindo, mas não se limitando a:

  • RedHat Enterprise Linux 7, 8, 9 e 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 e 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

Ative o módulo adicionando o seguinte no topo de /etc/nginx/nginx.conf:

load_module modules/ngx_http_fancyindex_module.so;

Este documento descreve o nginx-module-fancyindex v0.6.1 lançado em 01 de março de 2026.


Módulo Fancy Index do NGINX

O módulo Fancy Index possibilita a geração de listagens de arquivos, como faz o módulo embutido autoindex, mas adicionando um toque de estilo. Isso é possível porque o módulo permite um certo grau de personalização do conteúdo gerado:

  • Cabeçalhos personalizados, locais ou armazenados remotamente.
  • Rodapés personalizados, locais ou armazenados remotamente.
  • Adicione suas próprias regras de estilo CSS.
  • Permite escolher ordenar os elementos por nome (padrão), tempo de modificação ou tamanho; tanto em ordem crescente (padrão) quanto decrescente.

Este módulo foi projetado para funcionar com Nginx, um servidor web de alto desempenho e código aberto escrito por Igor Sysoev.

Requisitos

CentOS, RHEL, Fedora Linux

Para usuários do repositório oficial estável do Nginx, o repositório de pacotes extras com módulos dinâmicos está disponível e o fancyindex está incluído.

Instale a configuração do repositório e, em seguida, o pacote do módulo:

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

Em seguida, carregue o módulo em /etc/nginx/nginx.conf usando:

load_module "modules/ngx_http_fancyindex_module.so";

macOS

Os usuários podem instalar o Nginx no macOS com MacPorts; o fancyindex está incluído:

sudo port install nginx

Outras plataformas

Na maioria dos outros casos, você precisará dos fontes do Nginx. Qualquer versão a partir da série 0.8 deve funcionar.

Para usar as diretivas fancyindex_header_ e fancyindex_footer_, você também precisará do ngx_http_addition_module embutido no Nginx.

Compilação

  1. Descompacte os fontes do Nginx:

    $ gunzip -c nginx-?.?.?.tar.gz | tar -xvf -
    
  2. Descompacte os fontes do módulo de indexação fancy:

    $ gunzip -c nginx-fancyindex-?.?.?.tar.gz | tar -xvf -
    
  3. Mude para o diretório que contém os fontes do Nginx, execute o script de configuração com as opções desejadas e tenha certeza de colocar uma flag --add-module apontando para o diretório que contém os fontes do módulo de indexação fancy:

    $ cd nginx-?.?.?
    $ ./configure --add-module=../nginx-fancyindex-?.?.? \
       [--with-http_addition_module] [opções extras desejadas]
    

    Desde a versão 0.4.0, o módulo também pode ser construído como um módulo dinâmico, usando --add-dynamic-module=… em vez de load_module "modules/ngx_http_fancyindex_module.so"; no arquivo de configuração.

  4. Compile e instale o software:

    $ make
    

    E então, como root:

    # make install
    
  5. Configure o Nginx usando as diretivas de configuração dos módulos.

Exemplo

Você pode testar o estilo padrão embutido adicionando as seguintes linhas em uma seção server no seu arquivo de configuração do Nginx:

location / {
  fancyindex on;              # Ativa índices fancy.
  fancyindex_exact_size off;  # Saída de tamanhos de arquivos legíveis por humanos.
}

Temas

Os seguintes temas demonstram o nível de personalização que pode ser alcançado usando o módulo:

  • Tema por @TheInsomniac. Usa cabeçalho e rodapé personalizados.
  • Tema por @Naereen. Usa cabeçalho e rodapé personalizados. O cabeçalho inclui um campo de busca para filtrar por nome de arquivo usando JavaScript.
  • Tema por @fraoustin. Tema responsivo usando elementos do Material Design.
  • Tema por @alehaa. Tema simples e plano baseado no Bootstrap 4 e FontAwesome.

Diretivas

fancyindex

Sintaxe
fancyindex [on | off]

Padrão
fancyindex off

Contexto
http, server, location

Descrição
Ativa ou desativa índices de diretório fancy.

fancyindex_default_sort

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

Padrão
fancyindex_default_sort name

Contexto
http, server, location

Descrição
Define o critério de ordenação por padrão.

fancyindex_case_sensitive

Sintaxe
fancyindex_case_sensitive [on | off]

Padrão
fancyindex_case_sensitive on

Contexto
http, server, location

Descrição
Se ativado (configuração padrão), a ordenação por nome será sensível a maiúsculas e minúsculas. Se desativado, a caixa será ignorada ao ordenar por nome.

fancyindex_directories_first

Sintaxe
fancyindex_directories_first [on | off]

Padrão
fancyindex_directories_first on

Contexto
http, server, location

Descrição
Se ativado (configuração padrão), agrupa diretórios juntos e os ordena antes de todos os arquivos regulares. Se desativado, os diretórios são ordenados junto com os arquivos.

fancyindex_css_href

Sintaxe
fancyindex_css_href uri

Padrão
fancyindex_css_href ""

Contexto
http, server, location

Descrição
Permite inserir um link para uma folha de estilo CSS nas listagens geradas. O parâmetro uri fornecido será inserido como está em uma tag HTML <link>. O link é inserido após as regras CSS embutidas, portanto, você pode substituir os estilos padrão.

fancyindex_exact_size

Sintaxe
fancyindex_exact_size [on | off]

Padrão
fancyindex_exact_size on

Contexto
http, server, location

Descrição
Define como representar os tamanhos dos arquivos na listagem de diretórios: ou com precisão, ou arredondando para o kilobyte, o megabyte e o gigabyte.

Sintaxe
fancyindex_footer path [subrequest | local]

Padrão
fancyindex_footer ""

Contexto
http, server, location

Descrição
Especifica qual arquivo deve ser inserido ao pé das listagens de diretório. Se definido como uma string vazia, o rodapé padrão fornecido pelo módulo será enviado. O parâmetro opcional indica se o path deve ser tratado como uma URI a ser carregada usando um subrequest (o padrão), ou se refere a um arquivo local.

nota

Usar esta diretiva requer o ngx_http_addition_module_ embutido no Nginx.

aviso

Ao inserir um cabeçalho/rodapé personalizado, um subrequest será emitido, portanto, potencialmente qualquer URL pode ser usada como fonte para eles. Embora funcione com URLs externas, apenas o uso de internas é suportado. URLs externas não são testadas e usá-las fará com que o Nginx bloqueie enquanto espera a conclusão do subrequest. Se você sentir que um cabeçalho/rodapé externo é imprescindível para você, por favor me avise.

fancyindex_header

Sintaxe
fancyindex_header path [subrequest | local]

Padrão
fancyindex_header ""

Contexto
http, server, location

Descrição
Especifica qual arquivo deve ser inserido no cabeçalho das listagens de diretório. Se definido como uma string vazia, o cabeçalho padrão fornecido pelo módulo será enviado. O parâmetro opcional indica se o path deve ser tratado como uma URI a ser carregada usando um subrequest (o padrão), ou se refere a um arquivo local.

nota

Usar esta diretiva requer o ngx_http_addition_module_ embutido no Nginx.

fancyindex_show_path

Sintaxe
fancyindex_show_path [on | off]

Padrão
fancyindex_show_path on

Contexto
http, server, location

Descrição
Se deve ou não exibir o caminho e a tag de fechamento \</h1> após o cabeçalho. Isso é útil quando você deseja manipular a exibição do caminho com um script PHP, por exemplo.

aviso

Esta diretiva pode ser desativada apenas se um cabeçalho personalizado for fornecido usando fancyindex_header.

fancyindex_show_dotfiles

Sintaxe
fancyindex_show_dotfiles [on | off]

Padrão
fancyindex_show_dotfiles off

Contexto
http, server, location

Descrição
Se deve listar arquivos que são precedidos por um ponto. A convenção normal é ocultá-los.

fancyindex_ignore

Sintaxe
fancyindex_ignore string1 [string2 [... stringN]]

Padrão
Sem padrão.

Contexto
http, server, location

Descrição
Especifica uma lista de nomes de arquivos que não serão exibidos nas listagens geradas. Se o Nginx foi construído com suporte a PCRE, as strings são interpretadas como expressões regulares.

Sintaxe
fancyindex_hide_symlinks [on | off]

Padrão
fancyindex_hide_symlinks off

Contexto
http, server, location

Descrição
Quando ativado, as listagens geradas não conterão links simbólicos.

fancyindex_hide_parent_dir

Sintaxe
fancyindex_hide_parent_dir [on | off]

Padrão
fancyindex_hide_parent_dir off

Contexto
http, server, location

Descrição
Quando ativado, não mostrará o diretório pai.

fancyindex_localtime

Sintaxe
fancyindex_localtime [on | off]

Padrão
fancyindex_localtime off

Contexto
http, server, location

Descrição
Ativa a exibição dos horários dos arquivos como horário local. O padrão é “off” (horário GMT).

fancyindex_time_format

Sintaxe
fancyindex_time_format string

Padrão
fancyindex_time_format "%Y-%b-%d %H:%M"

Contexto
http, server, location

Descrição
String de formato usada para timestamps. Os especificadores de formato são um subconjunto dos suportados pela função strftime, e o comportamento é independente de local (por exemplo, os nomes de dias e meses estão sempre em inglês). Os formatos suportados são:

  • %a: Nome abreviado do dia da semana.
  • %A: Nome completo do dia da semana.
  • %b: Nome abreviado do mês.
  • %B: Nome completo do mês.
  • %d: Dia do mês como um número decimal (intervalo de 01 a 31).
  • %e: Como %d, o dia do mês como um número decimal, mas um zero à frente é substituído por um espaço.
  • %F: Equivalente a %Y-%m-%d (o formato de data ISO 8601).
  • %H: Hora como um número decimal usando um relógio de 24 horas (intervalo de 00 a 23).
  • %I: Hora como um número decimal usando um relógio de 12 horas (intervalo de 01 a 12).
  • %k: Hora (relógio de 24 horas) como um número decimal (intervalo de 0 a 23); dígitos únicos são precedidos por um espaço.
  • %l: Hora (relógio de 12 horas) como um número decimal (intervalo de 1 a 12); dígitos únicos são precedidos por um espaço.
  • %m: Mês como um número decimal (intervalo de 01 a 12).
  • %M: Minuto como um número decimal (intervalo de 00 a 59).
  • %p: "AM" ou "PM" de acordo com o valor de tempo dado.
  • %P: Como %p, mas em minúsculas: "am" ou "pm".
  • %r: Hora em notação a.m. ou p.m. Equivalente a %I:%M:%S %p.
  • %R: Hora em notação de 24 horas (%H:%M).
  • %S: Segundo como um número decimal (intervalo de 00 a 60).
  • %T: Hora em notação de 24 horas (%H:%M:%S).
  • %u: Dia da semana como um decimal, intervalo de 1 a 7, sendo segunda-feira 1.
  • %w: Dia da semana como um decimal, intervalo de 0 a 6, sendo segunda-feira 0.
  • %y: Ano como um número decimal sem século (intervalo de 00 a 99).
  • %Y: Ano como um número decimal incluindo o século.

GitHub

Você pode encontrar dicas adicionais de configuração e documentação para este módulo no repositório do GitHub para nginx-module-fancyindex.