location ~^/(?<service>.*)/api/(?<path>.*)$ {
access_log /tmp/cache/$service-access.log ;
return 200 "$service" ;
}
}
Но. Заработало, только после добавления root. Впрочем, у меня своеобразная сборка. СтОит проверить на обычной.
Впрочем, если подумать - то причина становится очевидна, и это не зависит от сборки.
Корень проблемы в том, что при использовании переменных в имени лога, nginx переоткрывает файл лога на каждую операцию записи. Даже если переменные еще до конца не раскрылись - тогда путь будет невалидным, и nginx пойдет писать лог в root, который обычно закрыт для записи - отчего операция открытия лога вываливается с ошибкой.
Обсуждают сегодня