¿Conservar unicornios sirviendo imágenes con nginx?

He estado pensando en intentar conservar las instancias de unicornio que consumen mucha memoria configurando mi nginx externo (que ya tengo para servir la página de mantenimiento 502 y para atribuir correctamente las direcciones IPv6) para que también sirva las solicitudes de imágenes; con la intención de obtener gran parte del valor de moverlas a S3 (o un servicio de objetos compatible) pero manteniendo aún el sitio autocontenido en mi servidor. (Esto no movería otros activos del sitio fuera de los unicornios, pero esos se almacenan en caché bien de página en página, por lo que eso representa un costo general mucho menor en los unicornios.)

Al igual que al apuntar nginx externo a un socket en /var/discourse/shared, serviría /uploads desde /var/discourse/shared/$container/uploads.

No veo mención aquí en meta de que alguien haya hecho esto, aunque mi habilidad de búsqueda podría ser débil. ¿Estoy pasando por alto alguna razón por la cual esto no funcionaría o funcionaría mal en la práctica?

Ya estamos sirviendo las imágenes mediante el nginx interno del contenedor.

Oh. Al menos ahora la próxima persona con esta brillante idea podrá encontrarlo cuando lo busque. ¡Muchas gracias! :grin:

Si quieres ayudar a tus unicornios, algo que realmente ayuda es habilitar un CDN para tu Discourse, ya que almacenará en caché los pocos recursos que se sirven en los unicornios, como las hojas de estilo.

Supongo que habilitar la caché en el nginx externo tendría el mismo beneficio en cuanto a la carga de los unicorns, sin necesidad de configurar una CDN. Veo que todos los activos de JavaScript tienen encabezados de control de caché, así que quizás pruebo esto…

… bueno, veo que el nginx interno ya está utilizando proxy_cache con una validez de 7 días para las solicitudes que no son errores:

    location ~ ^/(svg-sprite/|letter_avatar/|letter_avatar_proxy/|user_avatar|highlight-js|stylesheets|theme-javascripts|favicon/proxied|service-worker) {
      ...
      # nota: x-accel-redirect no puede usarse 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;
    }

¿Cómo ayuda una CDN con los unicorns en ese caso? Veo stylesheets en esa lista.