Всем привет! Есть бэкенд, который генерирует пнг картинку. Этот бэкенд сидит за nginx:
server {
server_name conv.site.com ;
client_max_body_size 32m;
location / {
proxy_pass http://127.0.0.1:3021 ;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Нужно сделать так, чтоб бэкенд генерил одну и ту же картинку только один раз. То есть когда nginx получает запрос, который уже получал ранее, он возвращал картинку из кеша, и не дергал бэкенд. Время жизни кеша - бессрочное. Но нужно говорить nginx'у, что кеш по определенному запросу устарел, и его нужно удалить.
Для этого делаю следующее:
в самое начало конфига добавляю вот что:
proxy_cache_path /var/lib/nginx/cache levels=1:2 keys_zone=cache:30m max_size=1G;
proxy_temp_path /var/lib/nginx/proxy 1 2;
proxy_ignore_headers Expires Cache-Control;
proxy_cache_use_stale error timeout invalid_header http_502;
proxy_cache_bypass $cookie_session;
proxy_no_cache $cookie_session;
и в самое начало локейшн:
location / {
proxy_cache cache;
proxy_cache_valid 10m;
proxy_cache_valid 404 1m;
proxy_pass http://127.0.0.1:3021 ;
...
После этого в логе вижу:
2019/03/04 12:43:21 [alert] 16000#16000: mmap(MAP_ANON|MAP_SHARED, 104857598951424) failed (12: Cannot allocate memory)
при том, что диска на сервере 200гб, а оперативки 8гб. И они ничем не заняты.
Как решить эту задачу? Спасибо.
server {
server_name conv.site.com ;
client_max_body_size 32m;
location / {
proxy_pass http://127.0.0.1:3021 ;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Нужно сделать так, чтоб бэкенд генерил одну и ту же картинку только один раз. То есть когда nginx получает запрос, который уже получал ранее, он возвращал картинку из кеша, и не дергал бэкенд. Время жизни кеша - бессрочное. Но нужно говорить nginx'у, что кеш по определенному запросу устарел, и его нужно удалить.
Для этого делаю следующее:
в самое начало конфига добавляю вот что:
proxy_cache_path /var/lib/nginx/cache levels=1:2 keys_zone=cache:30m max_size=1G;
proxy_temp_path /var/lib/nginx/proxy 1 2;
proxy_ignore_headers Expires Cache-Control;
proxy_cache_use_stale error timeout invalid_header http_502;
proxy_cache_bypass $cookie_session;
proxy_no_cache $cookie_session;
и в самое начало локейшн:
location / {
proxy_cache cache;
proxy_cache_valid 10m;
proxy_cache_valid 404 1m;
proxy_pass http://127.0.0.1:3021 ;
...
После этого в логе вижу:
2019/03/04 12:43:21 [alert] 16000#16000: mmap(MAP_ANON|MAP_SHARED, 104857598951424) failed (12: Cannot allocate memory)
при том, что диска на сервере 200гб, а оперативки 8гб. И они ничем не заняты.
Как решить эту задачу? Спасибо.