Для кеширования css и js для меня работает следующее:
location ~ "^(.*)\.(min.)?(css|js)$" {
expires max;
}
полученные результаты:
$ curl -I http://mysite.com/test.css
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 16 Jan 2014 18:55:28 GMT
Content-Type: text/css
Content-Length: 19578
Last-Modified: Mon, 13 Jan 2014 18:54:53 GMT
Connection: keep-alive
Expires: Thu, 31 Dec 2037 23:55:55 GMT
Cache-Control: max-age=315360000
X-Backend: stage01
Accept-Ranges: bytes
Я пытаюсь настроить управление версиями для своего js / css, используя 10-значную временную метку unix, и у меня возникают проблемы с получением соответствия регулярного выражения со следующим действительным регулярным выражением.
location ~ "^(.*)([\d]{10})\.(min\.)?(css|js)$" {
expires max;
}
полученные результаты:
$ curl -I http://mysite.com/test_1234567890.css
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 16 Jan 2014 19:05:03 GMT
Content-Type: text/css
Content-Length: 19578
Last-Modified: Mon, 13 Jan 2014 18:54:53 GMT
Connection: keep-alive
X-Backend: stage01
Accept-Ranges: bytes
Я бы попробовал без скобок вокруг \ d, скобки обычно используются либо для смежных символов, либо для чисел, ваши скобки говорят, что соответствуют либо символу '\', либо 'd'
"^(.*)(\d{10})\.(min\.)?(css|js)$"
Кроме того, вы специально сохраняете информацию о группе, которую вы захватываете, внутри парных скобок?
Для ясности в комментариях ниже.
Начни с простого.
"^.*[0-9]*\.css$"
"^.*[:digit:]*\.css$"
"^.*\d*\.css$"
В зависимости от того, что работает, используйте эту базу для цифр и расширьте, как показано ниже.
"^.*\d{10}\.(min\.)?(css|js)$"
Если вы также сопоставляете http / https, вы можете начать его с http / s, приведенного ниже, не забудьте изменить любое цифровое обозначение.
"^http(s)?://.*[0-9]{10}\.(min\.)?(css|js)$"