@Falco He solucionado el problema, por lo que ahora las vistas previas se muestran correctamente.
Sin embargo, cualquier elemento que antes se consideraba “sin vista previa” ya no aparece. Parece que Discourse ha guardado las URLs que no pudo recuperar mediante HEAD en algún tipo de caché (esto es solo una suposición por mi parte). ¿Qué puedo hacer para invalidar esos datos y hacer que intente obtener vistas previas de todas las URLs?