Докер 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;
    }
  }
}
Другие вопросы по тегам