BoriHagen
@BoriHagen

Как настроить кэширование Nginx + Apache 2?

Есть сайт на хостинге. Нужно вывести в топ по Google Page Speed (не надо плеваться, так хочет клиент). Сайт работает на Nginx + Apache 2. Пробовал вставлять такую конструкцию в .htaccess :

<FilesMatch ".(gif|jpg|jpeg|png|ico|js|css|ttf|woff|woff2)$">
  Header set Cache-Control "max-age=604800"
</FilesMatch>

Ноль результата.

Затем вставил в конфиг nginx.conf в http {} такую конструкцию:

server {
    location ~* ^.+\.(jpg|jpeg|gif|png|ico|js|css|ttf|woff|woff2)$ {
        expires 1w;
        add_header Cache-Control private;

    }
}

Перезапустил nginx. Все прошло без ошибок. Затестил на валидность service nginx status - говорит все ок.

Но кеширования так и не происходит. Что делать не знаю, уже перерыл кучу статей, и перепробовал кучу вариантов.
Есть мысль что я не правильно обращаюсь к location, но что конкретно неправильно я не пойму...

Так же заголовки изображения:

tRXyl.jpg
  • Вопрос задан
  • 422 просмотра
Решения вопроса 1
@mrsaa
в /etc/nginx/nginx.conf вставляете:
proxy_cache_path   /tmp/nginx_static levels=1:2 keys_zone=static_cache:30m max_size=100m inactive=60m use_temp_path=off;


в своем конфиге, в location где проксируете запросы на апач вставляете:
proxy_cache            static_cache;
proxy_cache_revalidate on;
proxy_cache_lock       on;
proxy_cache_valid      200 304 60m;
add_header             X-Cache-Status $upstream_cache_status;
add_header             Cache-Control "private";
add_header             Cache-Control max-age=3600;


Параметры можно оставить эти или отредактировать под свои нужды
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Berkutman
@Berkutman
Пример кэширования, если не хочешь что либо кэшировать то proxy_cache_bypass $cookie_nocache;

proxy_cache_path /etc/nginx/cache keys_zone=cache:30m;

upstream backend {
server 127.0.0.1:8088 max_fails=4 fail_timeout=43s;
}
location / {
proxy_pass http://backend;
proxy_cache cache;
proxy_cache_valid 40s;
}
location / {
proxy_pass http://backend;
proxy_cache cache;
proxy_cache_valid 40s;
}

location ~* \.php$ {
proxy_cache_bypass $cookie_nocache;
proxy_pass http://backend;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы