Создание директории кеша nginx - странное поведение
У меня есть следующая строка (плюс контекст) в моем nginx.conf
:
http {
proxy_cache_path cache/ keys_zone=auth_cache:10m;
...
поскольку nginx.conf
в /etc/nginx
, cache/
соответствует /etc/nginx/cache
, drwxr-XR-х. 5 корень корень 205 18 июня 16: 25 / etx / nginx
(Я также пробовал это с абсолютным путем /apps/nginx/cache/
drwx------. 2 nginx nginx 6 Jun 18 14:42 /apps/nginx
)
В любом случае, когда я пытаюсь
$ sudo systemctl start nginx
это терпит неудачу. journalctl -u nginx
говорит мне следующее:
... nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
... nginx: [emerg] mkdir() "/etc/nginx/cache" failed (13: Permission denied)
... nginx: configuration file /etc/nginx/nginx.conf test failed
(В альтернативном сценарии это говорит "/apps/nginx/cache"
вместо.)
Затем я попытался
$ sudo systemctl start nginx-debug
и это начинается без каких-либо проблем, ошибок или журналов предупреждений. Это создает cache/
каталог, где указано в nginx.conf
и когда я остановлю это и начну nginx
служба, это также начинается нормально.
Мне нужно понять, что вызывает это, поэтому я могу написать свою автоматизацию и управление конфигурацией для работы из коробки. Мои две гипотезы:
- Это проблема SELinux, и сервис / бинарный
nginx-debug
имеет разные теги / ограниченияnginx
, - Предполетная проверка при запуске
nginx
пытается создать каталог как другой. непривилегированный пользователь, ноnginx-debug
пропускает эти проверки и таким образом создает каталог как root или nginx.
Любая идея, как эффективно добраться до сути этого? Спасибо!
1 ответ
Не уверен, что это проблема selinux. Лучший способ проверить это - отключить selinux и запустить ваши вещи.
setenforce 0 //setenforce 1 (to refinforce)
Если это проблема selinux, вы можете попытаться установить контекст для папки кэша.
sudo semanage fcontext -a -t httpd_cache_t "/etc/nginx/cache(/.*)?"
sudo restorecon -Rv /etc/nginx/
Проверьте метку папки.
sudo ls -lZ /etc/nginx/