Перейти к содержанию

fancyindex: Модуль NGINX Fancy Index

Установка

Вы можете установить этот модуль в любой дистрибутив на базе RHEL, включая, но не ограничиваясь:

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

Включите модуль, добавив следующее в начало файла /etc/nginx/nginx.conf:

load_module modules/ngx_http_fancyindex_module.so;

Этот документ описывает nginx-module-fancyindex v0.6.1, выпущенный 1 марта 2026 года.


Модуль Nginx Fancy Index

Модуль Fancy Index позволяет генерировать списки файлов, как это делает встроенный модуль autoindex, но с добавлением стиля. Это возможно, потому что модуль позволяет определенную степень настройки сгенерированного контента:

  • Пользовательские заголовки, как локальные, так и хранящиеся удаленно.
  • Пользовательские подвал, как локальные, так и хранящиеся удаленно.
  • Добавьте свои собственные правила стилей CSS.
  • Позволяет выбирать сортировку элементов по имени (по умолчанию), времени изменения или размеру; как по возрастанию (по умолчанию), так и по убыванию.

Этот модуль предназначен для работы с Nginx, высокопроизводительным веб-сервером с открытым исходным кодом, написанным Игорем Сысоевым.

Требования

CentOS, RHEL, Fedora Linux

Для пользователей официального стабильного репозитория Nginx доступен репозиторий дополнительных пакетов с динамическими модулями, в который включен fancyindex.

Установите конфигурацию репозитория, затем пакет модуля:

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

Затем загрузите модуль в /etc/nginx/nginx.conf, используя:

load_module "modules/ngx_http_fancyindex_module.so";

macOS

Пользователи могут установить Nginx на macOS с помощью MacPorts; fancyindex включен:

sudo port install nginx

Другие платформы

В большинстве других случаев вам понадобятся исходные коды для Nginx. Любая версия, начиная с 0.8, должна работать.

Чтобы использовать директивы fancyindex_header_ и fancyindex_footer_, вам также понадобится встроенный в Nginx ngx_http_addition_module.

Сборка

  1. Распакуйте исходные коды Nginx:

    $ gunzip -c nginx-?.?.?.tar.gz | tar -xvf -
    
  2. Распакуйте исходные коды для модуля fancy indexing:

    $ gunzip -c nginx-fancyindex-?.?.?.tar.gz | tar -xvf -
    
  3. Перейдите в директорию, содержащую исходные коды Nginx, запустите скрипт конфигурации с желаемыми параметрами и обязательно добавьте флаг --add-module, указывающий на директорию, содержащую исходный код модуля fancy indexing:

    $ cd nginx-?.?.?
    $ ./configure --add-module=../nginx-fancyindex-?.?.? \
       [--with-http_addition_module] [дополнительные желаемые параметры]
    

    Начиная с версии 0.4.0, модуль также может быть собран как динамический модуль, используя --add-dynamic-module=… вместо этого и load_module "modules/ngx_http_fancyindex_module.so"; в конфигурационном файле.

  4. Соберите и установите программное обеспечение:

    $ make
    

    А затем, как root:

    # make install
    
  5. Настройте Nginx, используя директивы конфигурации модулей.

Пример

Вы можете протестировать встроенный стиль по умолчанию, добавив следующие строки в секцию server вашего конфигурационного файла Nginx:

location / {
  fancyindex on;              # Включить fancy индексы.
  fancyindex_exact_size off;  # Выводить размеры файлов в удобочитаемом формате.
}

Темы

Следующие темы демонстрируют уровень настройки, который можно достичь с помощью модуля:

  • Тема от @TheInsomniac. Использует пользовательский заголовок и подвал.
  • Тема от @Naereen. Использует пользовательский заголовок и подвал. Заголовок включает поле поиска для фильтрации по имени файла с использованием JavaScript.
  • Тема от @fraoustin. Адаптивная тема с использованием элементов Material Design.
  • Тема от @alehaa. Простая, плоская тема на основе Bootstrap 4 и FontAwesome.

Директивы

fancyindex

Синтаксис
fancyindex [on | off]

По умолчанию
fancyindex off

Контекст
http, server, location

Описание
Включает или отключает красивые индексы директорий.

fancyindex_default_sort

Синтаксис
fancyindex_default_sort [name | size | date | name_desc | size_desc | date_desc]

По умолчанию
fancyindex_default_sort name

Контекст
http, server, location

Описание
Определяет критерий сортировки по умолчанию.

fancyindex_case_sensitive

Синтаксис
fancyindex_case_sensitive [on | off]

По умолчанию
fancyindex_case_sensitive on

Контекст
http, server, location

Описание
Если включено (настройка по умолчанию), сортировка по имени будет учитывать регистр. Если отключено, регистр будет игнорироваться при сортировке по имени.

fancyindex_directories_first

Синтаксис
fancyindex_directories_first [on | off]

По умолчанию
fancyindex_directories_first on

Контекст
http, server, location

Описание
Если включено (настройка по умолчанию), директории группируются вместе и сортируются перед всеми обычными файлами. Если отключено, директории сортируются вместе с файлами.

fancyindex_css_href

Синтаксис
fancyindex_css_href uri

По умолчанию
fancyindex_css_href ""

Контекст
http, server, location

Описание
Позволяет вставить ссылку на таблицу стилей CSS в сгенерированные списки. Параметр uri будет вставлен как есть в HTML-тег <link>. Ссылка вставляется после встроенных правил CSS, так что вы можете переопределить стили по умолчанию.

fancyindex_exact_size

Синтаксис
fancyindex_exact_size [on | off]

По умолчанию
fancyindex_exact_size on

Контекст
http, server, location

Описание
Определяет, как представлять размеры файлов в списке директорий: либо точно, либо округляя до килобайта, мегабайта и гигабайта.

Синтаксис
fancyindex_footer path [subrequest | local]

По умолчанию
fancyindex_footer ""

Контекст
http, server, location

Описание
Указывает, какой файл должен быть вставлен в подвал списков директорий. Если установлено в пустую строку, будет отправлен подвал по умолчанию, предоставленный модулем. Необязательный параметр указывает, следует ли рассматривать path как URI для загрузки с использованием subrequest (по умолчанию), или он относится к local файлу.

заметка

Использование этой директивы требует встроенного в Nginx модуля ngx_http_addition_module.

предупреждение

При вставке пользовательского заголовка/подвала будет выполнен подзапрос, поэтому потенциально любой URL может быть использован в качестве источника для них. Хотя это будет работать с внешними URL, поддерживаются только внутренние. Внешние URL полностью не тестировались, и их использование приведет к блокировке Nginx в ожидании завершения подзапроса. Если вы считаете, что внешний заголовок/подвал необходимы, пожалуйста, сообщите мне.

fancyindex_header

Синтаксис
fancyindex_header path [subrequest | local]

По умолчанию
fancyindex_header ""

Контекст
http, server, location

Описание
Указывает, какой файл должен быть вставлен в заголовок списков директорий. Если установлено в пустую строку, будет отправлен заголовок по умолчанию, предоставленный модулем. Необязательный параметр указывает, следует ли рассматривать path как URI для загрузки с использованием subrequest (по умолчанию), или он относится к local файлу.

заметка

Использование этой директивы требует встроенного в Nginx модуля ngx_http_addition_module.

fancyindex_show_path

Синтаксис
fancyindex_show_path [on | off]

По умолчанию
fancyindex_show_path on

Контекст
http, server, location

Описание
Выводить ли путь и закрывающий тег после заголовка. Это полезно, когда вы хотите обрабатывать отображение пути с помощью скрипта PHP, например.

предупреждение

Эта директива может быть отключена только если предоставлен пользовательский заголовок с помощью fancyindex_header.

fancyindex_show_dotfiles

Синтаксис
fancyindex_show_dotfiles [on | off]

По умолчанию
fancyindex_show_dotfiles off

Контекст
http, server, location

Описание
Выводить ли файлы, которые начинаются с точки. Обычная практика заключается в том, чтобы скрывать их.

fancyindex_ignore

Синтаксис
fancyindex_ignore string1 [string2 [... stringN]]

По умолчанию
Нет по умолчанию.

Контекст
http, server, location

Описание
Указывает список имен файлов, которые не будут отображаться в сгенерированных списках. Если Nginx был собран с поддержкой PCRE, строки интерпретируются как регулярные выражения.

Синтаксис
fancyindex_hide_symlinks [on | off]

По умолчанию
fancyindex_hide_symlinks off

Контекст
http, server, location

Описание
При включении сгенерированные списки не будут содержать символические ссылки.

fancyindex_hide_parent_dir

Синтаксис
fancyindex_hide_parent_dir [on | off]

По умолчанию
fancyindex_hide_parent_dir off

Контекст
http, server, location

Описание
При включении не будет отображаться родительская директория.

fancyindex_localtime

Синтаксис
fancyindex_localtime [on | off]

По умолчанию
fancyindex_localtime off

Контекст
http, server, location

Описание
Включает отображение времени файлов в местном времени. По умолчанию "выключено" (GMT время).

fancyindex_time_format

Синтаксис
fancyindex_time_format string

По умолчанию
fancyindex_time_format "%Y-%b-%d %H:%M"

Контекст
http, server, location

Описание
Строка формата, используемая для временных меток. Спецификаторы формата являются подмножеством тех, которые поддерживаются функцией strftime, и поведение не зависит от локали (например, названия дней и месяцев всегда на английском). Поддерживаемые форматы:

  • %a: Сокращенное название дня недели.
  • %A: Полное название дня недели.
  • %b: Сокращенное название месяца.
  • %B: Полное название месяца.
  • %d: День месяца в виде десятичного числа (диапазон от 01 до 31).
  • %e: Как %d, день месяца в виде десятичного числа, но ведущий ноль заменяется пробелом.
  • %F: Эквивалентно %Y-%m-%d (формат даты ISO 8601).
  • %H: Час в виде десятичного числа с использованием 24-часового формата (диапазон от 00 до 23).
  • %I: Час в виде десятичного числа с использованием 12-часового формата (диапазон от 01 до 12).
  • %k: Час (24-часовой формат) в виде десятичного числа (диапазон от 0 до 23); однозначные числа предшествуют пробелом.
  • %l: Час (12-часовой формат) в виде десятичного числа (диапазон от 1 до 12); однозначные числа предшествуют пробелом.
  • %m: Месяц в виде десятичного числа (диапазон от 01 до 12).
  • %M: Минута в виде десятичного числа (диапазон от 00 до 59).
  • %p: Либо "AM", либо "PM" в зависимости от указанного значения времени.
  • %P: Как %p, но в нижнем регистре: "am" или "pm".
  • %r: Время в формате a.m. или p.m. Эквивалентно %I:%M:%S %p.
  • %R: Время в 24-часовом формате (%H:%M).
  • %S: Секунда в виде десятичного числа (диапазон от 00 до 60).
  • %T: Время в 24-часовом формате (%H:%M:%S).
  • %u: День недели в виде десятичного числа, диапазон от 1 до 7, понедельник - 1.
  • %w: День недели в виде десятичного числа, диапазон от 0 до 6, понедельник - 0.
  • %y: Год в виде десятичного числа без века (диапазон от 00 до 99).
  • %Y: Год в виде десятичного числа с учетом века.

GitHub

Вы можете найти дополнительные советы по конфигурации и документацию для этого модуля в репозитории GitHub для nginx-module-fancyindex.