Conservare gli unicorni servendo immagini con nginx?

Sto pensando di provare a ridurre il consumo di memoria delle istanze Unicorn configurando il mio nginx esterno (che già utilizzo per servire la pagina di manutenzione 502 e per attribuire correttamente gli indirizzi IPv6) in modo che serva anche le richieste per le immagini; con l’intento di ottenere gran parte dei vantaggi del trasferimento su S3 (o su un servizio oggetti compatibile), ma mantenendo comunque il sito autosufficiente sul mio server. (Questo non sposterebbe altre risorse del sito dalle istanze Unicorn, ma queste sono ben cacheate da pagina a pagina, quindi rappresentano un costo complessivo molto più basso per le istanze Unicorn.)

Proprio come indirizzare nginx esterno verso un socket in /var/discourse/shared, servirei /uploads da /var/discourse/shared/$container/uploads.

Non vedo menzioni qui su meta che qualcuno abbia già fatto questo, anche se la mia abilità di ricerca potrebbe essere debole. Mi sto perdendo qualche motivo per cui questa soluzione non funzionerebbe o funzionerebbe male nella pratica?

Serviamo già le immagini utilizzando nginx interno nel contenitore.

Oh. Almeno ora la prossima persona con questa brillante idea potrebbe trovarla quando la cerca. Molte grazie! :grin:

Se vuoi aiutare i tuoi unicorni, una cosa che effettivamente aiuta è Abilita un CDN per il tuo Discourse, poiché memorizzerà nella cache le poche risorse servite sugli unicorni, come i fogli di stile.

Immagino che abilitare la cache sul nginx esterno offra lo stesso vantaggio per il caricamento degli unicorni, senza dover configurare una CDN. Vedo che gli header di controllo della cache sono presenti su tutte le risorse JavaScript, quindi potrei provare questa soluzione…

… beh, vedo che anche il nginx interno sta già utilizzando proxy_cache con una validità di 7 giorni per le richieste senza errori:

    location ~ ^/(svg-sprite/|letter_avatar/|letter_avatar_proxy/|user_avatar|highlight-js|stylesheets|theme-javascripts|favicon/proxied|service-worker) {
      ...
      # nota: x-accel-redirect non può essere utilizzato con proxy_cache
      proxy_cache one;
      proxy_cache_key "$scheme,$host,$request_uri";
      proxy_cache_valid 200 301 302 7d;
      proxy_cache_valid any 1m;
      proxy_pass http://discourse;
      break;
    }

In questo caso, come può aiutare una CDN con gli unicorni? Vedo stylesheets in quell’elenco.