Как создать переменную с текущей датой в формате yyyy-mm-dd в nginx?

Как можно задать переменную $DATE в nginx для поиска файла по пути /public/tmp/$domain/2024-01-01/files, используя текущую дату?
  • 29 июня 2024 г. 17:11
Ответы на вопрос 2
В nginx не предусмотрен встроенный способ создания переменных с датой. Однако, можно воспользоваться модулем ngx_http_perl_module для выполнения кода на Perl в конфигурационном файле nginx.

Для создания переменной $DATE с текущей датой в формате yyyy-mm-dd можно использовать следующий код на Perl:

```nginx
perl_set $DATE 'sub {
    my ($sec,$min,$hour,$mday,$mon,$year) = localtime(time);
    $year += 1900;
    $mon++;
    return sprintf("%04d-%02d-%02d", $year, $mon, $mday);
}';
```

После этого можно использовать переменную $DATE для поиска файла по указанному пути:

```nginx
location / {
    root /public/tmp/$domain/;
    try_files /$DATE/files =404;
}
```

При такой конфигурации nginx будет искать файл по пути /public/tmp/$domain/год-месяц-день/files, где год, месяц и день будут текущими датой.
map $time_iso8601 $date {
    ~(\d+-\d+-\d+).* $1;
    default "0000-00-00";
}
Похожие вопросы