При добавлении следующего в мой блок сервера конфигурации Nginx расположение / blog / начинает 404 со всеми указанными типами файлов. Как правильно использовать директиву expires и продолжить работу proxy_pass в полном объеме? Есть ли способ настроить регулярное выражение, чтобы отображать все эти типы файлов, кроме каталогов / blog / *?
location ~* \.(jpg|jpeg|png|gif|ico|css|js|pdf)$ {
expires 7d;
}
Ниже приведены ссылки на другие местоположения в серверном блоке. Если вытащу истекающий 7d; все работает нормально.
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location /blog/ {
proxy_pass https://blog.domain.com/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
# browser caching of static assets
location ~* \.(jpg|jpeg|png|gif|ico|css|js|pdf)$ {
expires 7d;
}
Например:
map $uri $expires {
default off;
~\.(jpg|jpeg|png|gif|ico|css|js|pdf)$ 7d;
}
server {
...
location / {
expires $expires;
try_files $uri $uri/ /index.php?$query_string;
}
...
}
При таком подходе вы можете указать время истечения срока действия dirrerent для разных типов файлов:
map $uri $expires {
default off;
~\.(jpg|jpeg|png|gif|ico)$ 30d;
~\.(css|js|pdf)$ 7d;
}
Другой способ - установить срок действия по типу содержимого тела запроса, например из официальная документация:
map $sent_http_content_type $expires {
default off;
application/pdf 42d;
~image/ max;
}
server {
...
expires $expires;
...
}