In quasi ogni applicazione web chì usa l'imaghjini, ci hè bisognu di creà copie petite di sti imagine, è spessu ci sò parechji formati per l'imaghjini supplementari.
L'aghjunzione di dimensioni novi à una applicazione esistente provoca ancu alcuni mal di testa. Da quì u compitu:
Objettivu
Denotemu a lista di esigenze:
Generate imaghjini supplementari di qualsiasi formati nantu à a mosca senza introduzione di funziunalità supplementari in l'applicazione in ogni mumentu durante l'esistenza di l'applicazione;
L'imaghjini supplementari ùn anu micca bisognu di esse generati nantu à ogni dumanda;
Disattivate a capacità di generà imaghjini supplementari di formati micca specificati.
Spiegheraghju l'ultimu puntu, perchè cuntradisce un pocu u primu puntu. Se facemu a generazione di qualsiasi imaghjini aperti, allora ci hè una pussibilità di un attaccu à u situ generendu un gran numaru di dumande per resize l'imaghjini in un numeru infinitu di formati, perchè sta vulnerabilità deve esse chjusa.
cunfigurazione di installazione nginx
Per risolve i requisiti sopra, avemu bisognu di u seguitu set di moduli nginx:
Moduli ngx_http_image_filter_module и ngx_http_secure_link_module ùn sò micca stallati per difettu, cusì deve esse specificatu in a fase di cunfigurazione di a stallazione nginx:
Aghjunghjemu un novu à a nostra cunfigurazione d'ospiti insignamentu è paràmetri di cache generale:
...
proxy_cache_path /www/myprojects/cache levels=1:2 keys_zone=image-preview:10m;
...
server {
...
location ~ ^/preview/([cir])/(.+) {
# Тип операции
set $oper $1;
# Параметры изображения и путь к файлу
set $remn $2;
# Проксируем на отдельный хост
proxy_pass http://myproject.ru:81/$oper/$remn;
proxy_intercept_errors on;
error_page 404 = /preview/404;
# Кеширование
proxy_cache image-preview;
proxy_cache_key "$host$document_uri";
# 200 ответы кешируем на 1 день
proxy_cache_valid 200 1d;
# остальные ответы кешируем на 1 минуту
proxy_cache_valid any 1m;
}
Ancu se ricumanderaghju ancu di calculà e dimensioni antìcipu.
Rastrellu
Quandu sguassate l'imaghjini uriginale, i previews, naturalmente, ùn saranu micca sguassati da u cache finu à chì u cache hè invalidatu, è in u nostru casu, i previews ponu esiste per un ghjornu dopu a eliminazione, ma questu hè u tempu massimu.