Моя текущая конфигурация Nginx:
location / {
expires 1d;
add_header Cache-Control public;
try_files $uri $uri.html @proxy;
}
Но часть expires 1d;
не соответствует моим потребностям. На самом деле содержание хорошо до конца текущего месяца. Или сделать это проще до 00:01 am
1-го числа следующего месяца. На самом деле это даже не должно быть на 100% точным. Если я немного потеряю оптимизацию за последние 1-3 дня, это не проблема (если подумать о проблеме 28 февраля).
Решение, которое я могу реализовать, - это задание cron, которое обновляет конфигурацию Nginx раз в день и перезагружает Nginx с помощью скрипта Bash. Но это не правильно. Я бы хотел решить эту проблему в конфигурации Nginx.
Так что я думаю о наборе структур if / else, который выбирает текущий день месяца, а затем устанавливает число.
Идея (на самом деле это не код конфигурации Nginx):
if day_of_month = 1
expires 31d
end
if day_of_month = 2
expires 30d
end
if day_of_month = 3
expires 29d
end
...
Я читаю http://nginx.org/en/docs/http/ngx_http_headers_module.html но я не уверен, сработает ли что-то подобное:
if current_month = 1
expires epoche "00:00:00 01-02-$current_year"
end
if current_month = 2
expires epoche "00:00:00 01-03-$current_year"
end
if current_month = 3
expires epoche "00:00:00 01-04-$current_year"
end
...
if current_month = 12
expires epoche "00:00:00 01-01-($current_year + 1)"
end
Как лучше всего решить эту проблему в обычной конфигурации Nginx? Могу ли я использовать текущую дату в условии if?