Аналог IncludeOptional в веб-сервере nginx

Современные панели управления для веб-серверов, призванные облегчить администрирование оных (либо используемые в целях продажи виртуального хостинга) все еще не позволяют гибко настраивать nginx для каждого аккаунта через веб-интерфейс. Оно и понятно. Возможных настроек существует просто огромное количество и делать для всего этого веб-интерфейс ради каких-то 0,5% пользователей, которым не хватает стандартных настроек — бессмысленно. В качестве лайфхака некоторые панели позволяют администраторам серверов вписывать для конкретных хостов настройки в отдельные файлы, которые обычно остаются пустыми, но при этом все равно создаются в файловой системе. Что делать, если кастомные настройки нужны, а плодить пустые файлы не хочется?

В веб-сервере Apache для этого существовала специальная директива IncludeOptional, которая попросту игнорировалась в случае, если такого файла не было в файловой системе, либо если использовались маски для файлов и ни один файл не попал под маску.

К счастью, разработчики веб-сервера nginx поступили дальновиднее и просто позволили включать директивой include файлы с маской. При этом, естественно, никаких ошибок при отсутствии файлов, попавших под маску тоже не генерируется. Но что делать, если вы хотите включить конкретный файл и не хотите «случайного» включения туда «левого» файла по маске? Использовать небольшую хитрость — задать имя файла в виде include /usr/local/etc/nginx/optional_config_file.con[f]. Т.е. мы якобы задаем маску, но под эту маску попадает только один файл. При этом, в случае отсутствия файла никаких ошибок не появится.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *