<module-HTTP>

Модуль протокола HTTP не привязан к другим модулям и может быть единственным загруженным модулем.

Примечание

В составе сервера Manjary есть приложение fast-cgi fcgimm реализующее WEB-интерфейс и взаимодействущее с интерфейсом MMP через сеть либо локальный сокет. Этот интерфейс может использоваться пользователями для получения информации о своей учётной записи и смены пароля или операторами и администраторами для управления доменами, пользователями и пр. Приложение fcgimm может быть запущено на любом сервере в сети и к нему может обращаться любой WEB-сервер поддерживающий протокол fast-cgi. Это делает возможным управление множеством серверов Manjary из одного места. В простом случае fcgimm используется модулем HTTP сервера Manjary.

<module-HTTP>
  <log-level>N</log-level>
  <host>...</host>
  ...
  <limit-req-fields>N</limit-req-fields>
  <limit-req-line>bytes</limit-req-line>
  <limit-req-field>bytes</limit-req-field>
  <limit-req-body>bytes</limit-req-body>
  <fastcgi name="fcginame">
     <server>hostname:port|IPv4:port|[IPv6]:port|socket_name</server>
     <start>filename</start>
     ...
  </fastcgi>
  ...
  <directory path="directory/path">
    <acl not-listed="permit|deny|parent">
      <addr>...</addr>
      ...
    <acl>
    <index type="parent|deny|auto[,list]|redirect[,list]|list">file1 file2</index>
    <mime-types file="filename">
      <ext name="type/name">ext</ext>
      ...
    </mime-types>
    <file must-exist="0|1">
       <match>pattern1|pattern2</match>
       <match>pattern3</match>
       <set-env name="string" cs="0|1" value="pattern">new value</set-env>
       ...
       <handler>$fcginame|@local-filename|URI-filename</handler>
       <acl not-listed="permit|deny|parent">...</acl>
    </file>
    ...
  </directory>
  ...
  <vhost>
    <names>hostname[123] *pattern-?</names>
    <names>one?more</names>
    ...
    <ports>N1,N2-N3,N4</ports>

    <SSL-certificate-file>filename</SSL-certificate-file>
    <SSL-key-file>filename</SSL-key-file>
    <SSL-key-password>secret</SSL-key-password>
    <SSL-min-version>none|SSLv3|TLSv1|TLSv1.1|TLSv1.2|TLSv1.3</SSL-min-version>
    <SSL-cipher>cipher list</SSL-cipher>
    <SSL-cipher-TLSv1.3>cipher suite</SSL-cipher-TLSv1.3>

    <document-root>directory/path</document-root>
    <alias script="1|0" uri-path="/path/">local/path</alias>
    ....
    <redirect type="301|302|303|307|308|permanent|temporary"
              uri-path="/path/" full-path="0|1">local/path</redirect>
    ...
    <directory>...</directory>
    ...
  </vhost>
  ...
</module-HTTP>
host

В узле host указываются порты для протокола HTTP (например, стандартный - 80) без SSL и для HTTPS (стандартный - 443) с SSL. Как и в других частях конфигурации, возможно указание нескольких узлов host с разными списками портов, ключами, сертификатами и ACL.

limit-req-fields

Ограничение числа полей HTTP-запроса. По-умолчанию: 100.

limit-req-line

Ограничение размера строки HTTP-запроса. По-умолчанию: 8 Kb.

limit-req-field

Ограничение размера поля заголовка HTTP-запроса. По-умолчанию: 8 Kb.

limit-req-body

Допустимый размер тела HTTP-запроса. Значение 0 означает отсутствие ограничения. По-умолчанию: 1 Gb.

fastcgi

Связывает имя заданное пользователем в атрибуте name с информацией о сервере FastCGI. Обязательный узел server описывает адрес и порт по которым нужно подключаться к серверу FastCGI. Если порт не указан, значение узла server рассматривается как имя локального сокета. Необязательный узел start задаёт имя исполняемого файла с параметрами который будет запущен при запуске сервера Manjary и будет запускаться автоматически если процесс завершился.

Примечание

В Windows до версии 10 локальные именованные сокеты не поддерживаются.

Допускается указание нескольких узлов server для распределения нагрузки между процессами которые принимают соединения на разных портах.

Примечание

Указание более одного узла server может быть полезным, например, для FastCGI-сервера php-cgi, который не поддерживает одновременную обработку нескольких запросов. Однако, для для приложения fcgimm являющегося частью Manjary должен быть указан только один узел server, т.к. fcgimm не предполагает параллельную работу нескольких экземпляров и может одновременно обрабатывать множество запросов WEB-сервера.

directory

Описание локальной директории путь к которой задан в атрибуте path. Если путь не задан, то данный узел описывает директорию которая является корневой для всех остальных. Когда узел узел directory расположен внутри vhost, то путь может начинаться с символа звёздочка (*) которая при чтении конфигурации будет заменена на значение узла document-root.

index

Указывает что нужно возвращать при запросе URI который ссылается на данную директорию. Поведение определяется атрибутом type: parent|deny|auto[,list]|redirect[,list]|list. По-умолчанию: parent.

  • parent Использовать поведение заданное для родительской директории.

  • deny Вернуть ошибку 403 Forbidden.

  • auto Значение узла рассматривается как список имён индексных файлов разделённых пробелами. Если в директории находится один из этих файлов, его содержимое будет возвращено в качестве ответа на запрос.

  • redirect Как auto, но ответом будет не содержимое файла, а перенаправление на него.

  • list В качестве ответа возвращается страница HTML со списком файлов и директорий содержащихся в данной директории.

  • auto,list (без пробелов до и после ',') Как auto, но если директория не содержит индексных файлов - как list.

  • redirect,list (без пробелов до и после ',') Как redirect, но если директория не содержит индексных файлов - как list.

mime-types

Задаёт соответствие расширений файлов и типов mime. Если указан атрибут file, список соответствий будет загружен из него (см. файл mime.types). Вложенные узлы ext дополняют список. При поиске соответствий директории будут просматриваться от заданной к корневой, пока расширение файла не будет найдено в настройках для одной из директорий.

acl

Список адресов клиентов ограничивающий доступ к директории. Атрибут not-listed задаёт поведение если адрес не найден: permit|deny|parent. По-умолчанию: parent - проверять через список для родительской директории.

file

Указывает как нужно обрабатывать файлы, имена которых соответствуют одной из масок в узлах match. Если параметр-переключатель must-exist установлен в 0, то обработчик для запрошенного файла будет вызван даже если файл не существует.

match

Список шаблонов имён файлов для которых будет применяться данный узел file. Шаблоны могут быть заданы в разных узлах match, либо в одном с разделителем "|".

set-env

Необязательный узел. Устанавливает или заменяет значение переменной окружения которая передаётся обработчику указанному в узле handler. Если имя переменной окружения устанавливаемой веб-сервером совпадает со значением параметра name, её значение заменяется на значение узла set-env. Если переменной с указанным именем нет - она будет добавлена в список переменных окружения.

Необязательный параметр value позволяет изменять значение переменной если её предыдущее значение совпадает с указанным шаблоном. При этом появляется возможность в значении узла вставлять части предыдущего значения соответствующие символам шаблона. Для этого используются последовательности "${n}", где n - номер совпадения начиная с 1. Например, узел:

<set-env name=REDIRECT_URL value=/webmail/*>/${1}</set-env>

переопределит переменную REDIRECT_URL если её предыдущее значение начиналось с "/webmail/". Новым значением будет строка начинающаяся со слэша и дополненная частью строки старого значения, идущей после "/webmail/".

Последовательность "${0}" в значении узла будет заменена на полное предыдущее значение переменной окружения.

По-умолчанию сравнение шаблона в параметре value со значением переменной регистронезависимое. Изменить это можно задав параметр-переключатель: cs=1.

handler

Если узел задан - указывает программу-обработчик которой в качестве аргумента будет передано полное локальное имя запрошенного файла. Результат работы программы выведенный на консоль будет возвращён в качестве ответа сервера. Значением узла может быть путь URI к программе CGI, путь должен быть описан через alias с параметром script=1. Если значение узла начинается с символа "$", оно рассматривается (без "$") как имя для сервера FastCGI заданное атрибутом name узла XML fastcgi. Значение начинающееся с символа "@" рассматривается (без "@") как локальное имя выполняемого файла, например @C:\PHP\php-cgi.exe.

acl

Список адресов клиентов ограничивающий доступ к файлам. Атрибут not-listed задаёт поведение если адрес не найден: permit|deny|parent. По-умолчанию: parent - проверять через список доступа для директории.

vhost

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

names

Шаблоны имён хоста. По-умолчанию хосту соответствует любое имя.

ports

Список портов хоста разделённых запятыми. Элементами списка могут быть номера портов или диапазоны номеров, например 80-88. Списком определяются порты из множества заданного в host. По-умолчанию хосту соответствует любой порт.

SSL-...

Указанные узлы SSL-... могут быть определены для конкретного виртуального хоста. Это необходимо когда имеется несколько хостов с разными именами и для каждого должны быть заданы свои приватный ключ и сертификат.

SSL-certificate-file, SSL-key-file

Файлы в формате PEM серверного сертификата и приватного ключа соответственно. Эти два узла должны быть обязательно заданы для использования шифрованных соединений как на потртах SSL, так и для TLS.

SSL-key-password

Указывает, если требуется, пароль которым защищён приватный ключ заданный узлом SSL-key-file.

SSL-min-version

Минимальная допустимая версия протокола SSL.

SSL-cipher

Набор шифров использующихся для версий SSL до TLSv1.2 включительно. Точный набор поддерживаемых наборов шифров определяется версией OpenSSL.

SSL-cipher-TLSv1.3

Набор шифров использующихся для версии SSL TLSv1.3.

document-root

Локальный путь к корневой директории хоста.

alias

Псевдоним для элемента пути URI. Значение узла - путь к локальной директории. Обязательный атрибут uri-path указывает имя элемента пути URI. Если для необязательного атрибута script установлено значение 1, подразумевается что директория указанная в значении узла содержит программы CGI.

redirect

Перенаправление: если запрошенный путь URI начинается со строки заданной атрибутом uri-path, то будет возвращён ответ перенаправляющий клиента на путь, начальная часть которого (совпадающая с uri-path) заменена значением узла. Если указан атрибут full-path со значением 1, то перенаправление используется только если запрошенный путь полностью совпадает со значением uri-path. Атрибут type определяет какой код ответа HTML будет использован для перенаправления: 301|302|303|307|308|permanent|temporary. Ключевое слово permanent соответствует 301, а temporary - 302.

directory

Настройки директорий в рамках конкретного хоста.