Re: Промежуточные каталоги

Gena Makhomed gmm на csdoc.com
Ср Авг 3 17:38:42 UTC 2011


On 03.08.2011 19:50, Igor Sysoev wrote:

> На данный момент nginx НЕ создаёт промежуточные каталоги в пути
> к каталогу для временных файлов и кэша, то есть, если нужен каталог
> /var/nginx/proxy_temp, а каталога /var/nginx нет, то nginx
> его не создаст. nginx может создать только proxy_temp в уже созданном
> /var/nginx

> Тем не менее, периодически возникают пожелания создавать все
> промежуточные каталоги.

чаще всего такие проблемы у тех, кто собирает nginx из исходников.
и на системе Windows тоже встречаются такие проблемы, скорее всего.

если nginx устанавливается через rpm-пакет - все необходимые каталоги
уже будут созданы еще в момент установки пакета, до запуска nginx.

> Вопрос - какие могут возникнуть проблемы, если nginx будет создавать
> все необходимые промежуточные каталоги и с какими, кстати, правами ?

права root:root 755, если промежуточный каталог не называется nginx
и nginx:nginx 700 если имя промежуточного каталога равно nginx

проблемы быть могут - если раздел с кэшем/файлами не примонтирован,
nginx молча создает необходимые ему каталоги в точке монтирования,
что отличается от существующего сейчас поведения nginx (fail-safe)

еще одна проблема - если кто-то допустил ошибку в конфиге,
например, вместо /var/lib/nginx/proxy_temp написал /vae/lib/...
то в этом случае nginx также молча пропустит эту опечатку и создаст
на сервере проблемы, которые можно будет увидеть только тогда,
когда на корневом разделе сервера закончится свободное место.

наверное имеет смысл существующее поведение оставить по умолчанию,
и принудительно создавать промежуточные каталоги только в том случае,
если nginx запускают с параметром командной строки -f (т.е. --force)

кому такое поведение nginx с принудительным созданием промежуточных
каталогов необходимо - просто будут запускать nginx с параметром -f
а у всех остальных пользователей nginx при этом ничего не сломается
и гарантированно nginx не сможет создать никому никаких проблем.

потом, кроме создания необходимых для работы каталогов к опции -f
может быть добавлена еще какая-то дополнительная функциональность.
( это будет означать: запускаться принудительно не смотря на ... )

при этом - выводить информацию / предупреждение о том, что nginx
создает такие каталоги (из-за ключа -f) и в лог и в поток stderr.

если ключ -f не задан - может быть выводить сообщение на экран и в лог,
что такой-то каталог не существует и надо чтобы администратор проверил
конфиг, и создал необходимые каталоги для работы nginx вручную
или просто запустил nginx с параметром командной строки -f,
в этом случае nginx их сам создаст и выставит владельца/права доступа.

пока что наблюдается два крупных подмножества среди пользователей nginx:

1. большинство - те кто устанавливает nginx через rpm-пакеты,
и кому не нужно чтобы nginx сам создавал эти каталоги и будет
даже вредно, поскольку такое поведение может создать проблемы.
т.е. это те, кто используют nginx for production use,
и кому нежелательны какие-либо проблемы из-за nginx.

2. меньшинство пользователей, которые не пользуются rpm-пакетами
и другими средствами операционной системы для установки nginx,
и устанавливают nginx компилируя с исходников, и копируя конфиги
с другой машины, или пользуются windows-версией и тоже копируют
чужие конфиги из интернета или с другой машины - им это будет
полезно и удобно. особенно, если это комплект nginx + fastcgi-php
для программистов и разработчиков, для использования в основном
в development и test environment на своей домашней или рабочей
windows машине, т.е. not for production use.

поэтому - предлагаю по дефолту в nginx ничего не менять и не создавать
(так как сейчас), но для облегчения жизни второй группы пользователей,
добавить в nginx параметр командной строки -f который будет это делать.

-- 
Best regards,
  Gena



Подробная информация о списке рассылки nginx-ru