Докер Nginx (13: разрешение отклонено) во время записи запроса на подключенный том
Я использую версию nginx: nginx/1.11.8
Мой докер файл выглядит так:
FROM nginx
COPY website /usr/share/nginx/html/website/
RUN chown -R nginx /usr/share/nginx/html
RUN chown -R nginx /var/log/nginx/
EXPOSE 80
Я использую переменные для своих имен журналов доступа, как показано ниже. При запуске без подключения к каталогу на хост-машине это работает нормально, и создаются журналы.
location / {
try_files $uri /index.html;
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") { set $year $1; set $month $2; set $day $3; }
access_log /var/log/nginx/nginx.$hostname.$year-$month-$day.log logs;
}
Мой каталог журналов хоста является владельцем:steve group:logs
если я удаляю переменные из имени журнала доступа, то он корректно записывается в каталог хоста, т.е.
access_log /var/log/nginx/nginx.novars.log logs;
Я пропускаю что-то явно очевидное, чтобы заставить это работать, используя переменные?
1 ответ
Решение
Оказывается, это был оператор if внутри блока местоположения, вызвавший проблему. Это работает и позволяет мне вращать мои журналы по дате.
http {
include /etc/nginx/conf/*.conf;
include /etc/nginx/mime.types;
server {
listen 80 default_server;
root /usr/share/nginx/html/;
underscores_in_headers on;
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") { set $year $1; set $month $2; set $day $3; }
location / {
index index.html index.htm;
try_files $uri $uri/ /index.html$query_string;
access_log /var/log/nginx/nginx.agent-ux.$hostname.$year-$month-$day.log logs;
}
}
}