У меня есть следующая строка (плюс контекст) в моем nginx.conf
:
http {
proxy_cache_path cache/ keys_zone=auth_cache:10m;
...
поскольку nginx.conf
в /etc/nginx
, cache/
соответствует /etc/nginx/cache
. drwxr-xr-x. 5 root root 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
service, это тоже запускается нормально.
Мне нужно понять, что вызывает это, чтобы я мог написать свою автоматизацию и управление конфигурацией, чтобы оно работало прямо из коробки. Мои две гипотезы:
nginx-debug
имеет разные теги / ограничения для nginx
.nginx
пытается создать каталог как другой. непривилегированный пользователь, но nginx-debug
пропускает эти проверки и, таким образом, создает каталог как root или nginx.Есть идеи, как эффективно разобраться в этом? Спасибо!
Не уверен, что это проблема с 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/