Skip to content

About Config file

Neytrinoo edited this page Jun 1, 2021 · 14 revisions

Из чего состоит config-файл

Конфиг файл состоит из однострочных и блочных свойств. Однострочное свойство выглядит следующим образом: property_name: property_value; Количество пробелов после двоеточия может быть каким угодно.

Блочные свойства выглядят так:

block1_name <some_settings> {
    property1_name: property_value1;
    property2_name: property_value2;

    block2_name {
        property1_name: property_value1;
    }
}

Количество пустых строк между свойствами (как блочными, так и однострочными) не ограничено. Если какое-то однострочное свойство во вложенном блоке имеет такое же имя, что и в его блоке-родителе, то для него перезапишется это свойство.

Пример config-файла

http {
    count_workflows: 8;

    access_log: access.log;
    error_log: error.log;

    server {
        listen: 80;
        servername: 127.0.0.1;
        root: /;

        location ~ /[\s\S]+.html {
            root: /html;
        }

        location ~ /[\s\S]+.css {
            root: /css;
        }

        location ~ /[\s\S]+.(jpg|png) {
        }

        location = /about.html {
            root: /main_page;
        }
    }
}

Требуют пояснения некоторые моменты. Модификатор *, который показывает, что url нечувствителен к регистру, можно поставить в дополнение к любому из других спецификаторов. При этом он обязательно должен следовать до всех остальных:

location *~ /[a-z][0-9].jpg - валидно
location =* /login.html - не валидно

Поля access_log и error_log показывают, в какой файл будут записываться логи. Их можно переопределить внутри каждого блока server.

Свойство root показывает, в какой директории следует искать запрашиваемый файл. Если в блоке location указано свойство root, то для текущего url'а root-папка родительского блока заменится. Но можно указать поле add_root. В таком случае следующий за этим полем путь добавится к родительскому.

Некоторые замечания

  1. Url в блоках location обязательно должен начинаться с символа /. В противном случая config невалиден

  2. Для каждого блока location обязательно должна быть root-папка. Это может быть либо родительская, либо переопределенная в нем. В блоке server может и не быть свойства root. В таком случае ожидается, что оно встретится во всех блоках location''', если нет - ошибка. Если в такой ситуации встретится поле add_root``` - также ошибка

  3. До блока http могут следовать (пока что) только следующие свойства:

  • count_workflows
  • access_log
  • error_log
  1. Блоков access_log и error_log может и не быть

  2. Файл всегда начинается с блока http, чтобы подчеркнуть, что у нас http-веб-сервер

  3. На одной строчке недопустимо прописывать более одного свойства

  4. Расположение фигурной скобки не важно

  5. В блоках location можно будет включать и отключать логирование. По умолчанию оно включено