@Iceforest

Как правильно кешировать запросы в nginx?

задача кешировать запросы до update index, который тоже иногда меняется
запросы вида sandbox6.dev.ru/api/v2/qa/diff/2291314/a49ef19f-60...
2291314 - update index
как правильно написать кеш для nginx, если нужно все запросы с ответом 200 кешировать, а остальные не кешировать,а просто отправлять не бекенд?
server {
    listen              80;
    server_name         sandbox6.dev.ru;

location / {
            return 403 ;
               }
location ~ ^/api/v2/qa/diff/[0-9]+ {
    resolver 10.8.8.81;
    proxy_http_version 1.1;
    client_max_body_size 20m;


    set $cache_key "$1";
    add_header X-Cache-Key "$cache_key";
    expires 2h;
    add_header X-Proxy-Cache $upstream_cache_status;
    proxy_cache $cache_key;
    proxy_cache_valid 200 2h;

    rewrite "^/api/v2/qa/diff/(.*)" /$1 break;
    proxy_pass http://test.qa.ru/api/push/diff/$1?$args;

      }
}

с таким конфигом ничего не кешируется
  • Вопрос задан
  • 157 просмотров
Решения вопроса 1
@dodo512
http {

proxy_cache_path /tmp/nginx_cache keys_zone=one:10m;

server {
    listen              80;
    server_name         sandbox6.dev.ru;

    location / {
            return 403 ;
    }

    location ~ ^/api/v2/qa/diff/(?<cache_key>[0-9]+) {

        proxy_pass http://test.qa.ru;
        proxy_http_version 1.1;

        rewrite "^/api/v2/qa/diff/(.*)" /api/push/diff/$1 break;
   
        add_header X-Proxy-Cache $upstream_cache_status;

        proxy_cache one;
        proxy_cache_valid 200 2h;
        proxy_cache_key $scheme$proxy_host$cache_key$is_args$args;

    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы