Мы используем NGINX для прокси-соединения с экземпляром Node.js, работающим на том же сервере. Без включения кеширования для этого местоположения на одном уровне (т.е. / v1 / streams /) он возвращает файл json размером 2 МБ. Если к URL-адресу добавлен идентификатор (т.е. / v1 / streams / 98souisdlfj87), возвращается только очень небольшая часть этого json-файла размером 2 МБ.
Если мы добавим кеширование, добавив новое местоположение, указывающее на / v1 / streams, все запросы будут возвращать файл json размером 2 МБ, независимо от глубины папки.
Вот соответствующие части моих конфигов.
http {
proxy_cache_path /var/lib/nginx/cache levels=1:2
keys_zone=streams:10m
max_size=1g inactive=10h;
proxy_cache_key "$request_uri";
proxy_headers_hash_max_size 8192;
proxy_headers_hash_bucket_size 256;
proxy_ignore_headers "Set-Cookie";
}
server {
location /v1/ {
proxy_pass http://127.0.0.1:5001/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header XNginX-Proxy true;
proxy_redirect off;
proxy_cache_bypass $http_upgrade;
}
location /v1/streams {
proxy_cache streams;
proxy_pass http://127.0.0.1:5001/streams/;
add_header X-Proxy-Cache $upstream_cache_status;
proxy_cache_valid 200 204 302 1d;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header XNginX-Proxy true;
proxy_redirect off;
proxy_cache_bypass $http_upgrade;
}
}
Я понял. Мне не хватало косой черты в конце локации.
location /v1/streams/ {
Теперь это работает.