Я хочу кэшировать некоторые статические файлы с помощью Nginx. Но я почему-то не могу заставить его работать.
Это мое nginx.conf
:
www-данные пользователя;
рабочие_процессы авто;
pid /run/nginx.pid;
включить /etc/nginx/modules-enabled/*.conf;
События {
worker_connections 768;
#multi_accept включен;
}
http {
#GZIP
gzip включен;
gzip_vary включен;
gzip_proxy любой;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_версия 1.1;
gzip_min_length 256;
приложение gzip_types/приложение javascript/приложение json/приложение ld+json/шрифт xml/шрифт eot/шрифт otf/текст ttf/текст css/текст javascript/обычный текст/xml;
# СЕРВЕРА
сервер {
слушать 80;
имя_сервера пример.com;
если ($http_host ~* ^www\.(.*)$ )
{
вернуть 301 https://$1$request_uri;
}
вернуть 301 https://$http_host$request_uri;
}
сервер {
слушать 443 ssl;
если ($http_host ~* ^www\.(.*)$ )
{
вернуть 301 $схема://$1$request_uri;
}
#SSL
ssl_certificate /root/.acme.sh/example.com/fullchain.cer;
ssl_certificate_key /root/.acme.sh/example.com/example.com.key;
имя_сервера пример.com;
# Передать весь трафик моему веб-приложению
место расположения / {
proxy_set_header Хост $host;
proxy_pass http://localhost:8080;
}
#Кэширование в браузере
расположение ~* \.(js|css)$ {
истекает через 180 дней;
add_header Прагма «общедоступная»;
add_header Cache-Control "public";
}
расположение ~* \.(jpg|jpeg|png|webp|woff|woff2|ttf)$ {
истекает через 365 дней;
add_header Прагма «общедоступная»;
add_header Cache-Control "public";
}
}
}
Проблема связана с частью «Кэширование браузера». При включении этого блока кода мой сайт загружается, но все css-файлы, javascript-файлы и изображения возвращают 404. Как будто эти файлы игнорируют мои место расположения /
.
Я смог решить эту проблему, скопировав/вставив
proxy_set_header Хост $host;
proxy_pass http://localhost:8080;
во всех моих место расположения
-blocks, но это не очень элегантно и на самом деле заставило мой сайт работать намного медленнее...
Я также попытался переместить два место расположения
-блоки для кеширования браузера в блоке место расположения \
поэтому последний будет действовать как «родитель». Но это не повлияло на поведение изображений и т. д., возвращающих 404.
Как мне настроить кеширование статических файлов в Nginx?
Редактировать:
Я добавил следующее в свой http
-блокировать:
карта $uri $cache_control {
~/Website/assets/media/images "общедоступно, без преобразования";
}
карта $uri $expire {
~/Веб-сайт/активы/медиа/изображения 365d;
}
Добавил следующее в мой сервер
-блокировать:
истекает $expire;
add_header Cache-Control $cache_control;
Ничего не кешируется.