Aceleración CDN completa del sitio para Discourse

I have a question concerning CDN technology.

Am I right that cdn can only cache the files in my site and can’t cache hotlinked files from another site?

I store catalogue files (mps and pictures) on another server and hotlink them on my Discourse site. Am I right that such files won’t be cached by cdn? Is there a way to cache the hotlinked files too?

Unless you tell discourse not to, it will pull those remote images to its own image store. The below assumes you turned that off.

You should put that site behind CDN and then share the CDN url to discourse.

If you put a CDN in front of your image site but share the origin url to discourse, You can use a built in feature to replace the origin url with the CDN url .

2 Me gusta

Am I right, that if I activate the CDN feature in Discourse and switch off saving the origin to Discourse, the cdn service will cache these external files and Discourse will replace all the links to files hotlinked from another site?

I doubt that can caches external files hotlinked from other sites. Can anybody approve it?

FYI - I’ve posted a new thread on how to setup full site CDN acceleration (and SSL termination) using AWS Cloudfront here (link below). There be dragons here - so tread lightly.

1 me gusta

¿Sigue siendo necesario cuando ocurre el error Reason: CORS header ‘Access-Control-Allow-Origin’ missing?

No encuentro nada que utilice esa variable en Github:


Editar: el comentario de configuración todavía dice que es necesario, y funciona después de eso. Así que simplemente lo aceptaré :slight_smile:

En los días actuales de 2023, ¿todavía se deben seguir estrictamente las cuatro reglas a continuación? Por ejemplo, si fuera a usar Akamai, que está diseñado para que el nombre de dominio principal acelere con su CDN. ¿Alguien tiene una configuración simplificada de las reglas a continuación, como si el bus de mensajes y el sondeo largo todavía necesitaran solicitar al origen? ¿Dónde deberían ir estas configuraciones? ¿Parece que la URL base del sondeo largo se ha eliminado del panel de administración?

2 Me gusta

Hay algunas opciones avanzadas que te permiten servir solicitudes de Message Bus desde un dominio diferente. Sin embargo, es muy complejo.

1 me gusta

Por lo tanto, la “URL base de sondeo prolongado” tiene que configurarse a través de la consola de Rails. Como se ha eliminado del panel de administración. Debo haberme perdido la razón publicada en algún lugar antes de por qué se eliminó si la configuración todavía es necesaria para que el sitio funcione bien en modo CDN de sitio completo.

Del mismo modo, DISCOURSE_ENABLE_CORS: true tiene que configurarse en app.yml.

Deberías configurarla con una variable de entorno (DISCOURSE_LONG_POLLING_BASE_URL) en tu app.yml. Está oculta porque muy pocas personas necesitan configurarla y se asume que si lo haces, sabes lo que estás haciendo.

1 me gusta

¡Gracias, @pfaffman! Debería haber sabido que todas estas variables en mayúsculas deberían ir en app.yml.
Entonces, ¿qué casos de uso del bus de mensajes tendrán efecto? Por ejemplo, ¿una respuesta a una publicación que cause una notificación, etc.? Haría una prueba de casos de uso para asegurar si el bus de mensajes en mi sitio funciona como se espera sin la configuración de DISCOURSE_LONG_POLLING_BASE_URL.

Hola,

¿Se ha eliminado la “URL base de sondeo prolongado” del panel de administración? ¿O se puede hacer esta configuración a través de la consola de Rails?

long_polling_base_url es una configuración oculta del sitio, pero se puede establecer desde la consola de Rails si no estás usando una variable de entorno en tu app.yml:

3 Me gusta

Esta lista definitivamente brinda más información sobre Discourse.
Configuré la CDN con mi sitio web, ha llegado a las cachés de borde, sin embargo, aún no he experimentado problemas con el bus de mensajes con sus encabezados de respuesta, pero todavía no se siente sólido. Tampoco he configurado los ajustes de CORS.

Cache-Control: must-revalidate, private, max-age=0

Hola,
Publiqué mi pregunta en otro hilo https://meta.discourse.org/t/full-site-cdn-using-aws-cloudfront/208161/2?u=hyan. Hice la misma configuración y dejé #DISCOURSE_CDN_URL: https://discourse-cdn.example.com sin cambios. ¿Puedo establecer esto en la misma URL del sitio web? Por ejemplo, http://forum.example.com. De lo contrario, hay URL de activos en ruta relativa sin nombre de dominio.
Agradecería si @sam o @pfaffman pudieran dar una pista.

No recomiendo usar Cloudflare como CDN. Algunas personas lo hacen. Quizás ellos puedan ayudar.

EDITAR: Oh, lo siento. Esto es “CDN de sitio completo…” Quizás no debería estar contribuyendo aquí.

No, utilizo Akamai CDN, que admite el caché de contenido dinámico.
Por la primera publicación en este hilo, parece que debería configurar DISCOURSE_CDN_URL como si no fuera un CDN de sitio completo, aunque la URL sea la misma que la URL del sitio web. Simplemente no estoy seguro de si configurarlo podría romper mi sitio y causar otros resultados irreversibles, y al final tenga que reinstalar el software desde cero. En esta publicación Full Site CDN Using AWS CloudFront, el autor no lo configura y deja DISCOURSE_CDN_URL sin cambios, y no requiere una URL separada para servir message-bus/long-polling. Utilizo esta solución y mi sitio web está funcionando bien hasta ahora. El único inconveniente de la solución es que hay muchas URL relativas (sin URL base, ya que el valor de DISCOURSE_CDN_URL está vacío) presentes en el código fuente de la página, lo que hace que no parezca un sitio web de nivel de producción.

Siguiendo mis preguntas, encontré una publicación similar a la que pregunto en esta publicación CloudFront not caching static files - #4 by Falco
Agradezco la respuesta de @Falco, en esta configuración de CDN de sitio completo, ¿puedo establecer DISCOURSE_CDN_URL igual que DISCOURSE_HOSTNAME? Ya que asumo que CDN de sitio completo significa que la CDN acelera la URL del nombre de host, lo que hace que DISCOURSE_CDN_URL sea igual que DISCOURSE_HOSTNAME. Pero aquí no hay una documentación decente sobre esto en meta.

Hola, ¿hay alguna plantilla para conejos?

No necesitas una plantilla para eso, solo configura bunny para que extraiga de tu sitio de discourse y establece DISCOURSE_CDN_URL al punto final de cdn proporcionado por bunny en app.yml.

1 me gusta

Lo estoy probando como “Aceleración CDN” con la IP de mi VPS con Bunny DNS. Funciona, pero todos los usuarios tienen la misma IP.
Acabo de encontrar la configuración, se llama “X-Real-Ip”.