Devolviendo 500 al solicitar avatares personalizados de usuarios

Intenté subir un avatar personalizado, se pudo subir correctamente, pero al solicitar https://example.com/user_avatar/example.com/example_user/96/11_2.png, simplemente devolvió un error 500. El avatar anónimo predeterminado no tiene este error.

Última rama master de Discourse.
Cloudflare R2 se utiliza como mi almacenamiento S3.

¿Estás en una unsupported-install?

En cualquier caso, 500 no es información suficiente. Por favor, comparte la información de registro relacionada y alguien podría ayudarte.

2 Me gusta

Por supuesto. Por cierto, he utilizado Cloudflare R2 (compatible con S3) para almacenar el contenido subido. Cuando revisé los archivos en el bucket, el archivo del avatar estaba allí, pero los clientes no podían acceder a él con https://example.com/user_avatar/example.com/example_user/96/11_2.png, es muy extraño.

En production.log, encontré esta línea:

Processing by UserAvatarsController#show as PNG
  Parameters: {"hostname" => "echonet.icu", "username" => "where", "size" => "288", "version" => "12_2"}
Completed 418  in 599ms (Views: 4.1ms | ActiveRecord: 0.0ms (0 queries, 0 cached) | GC: 0.4ms)

Esto puede estar relacionado con:

Podría ser un problema de S3 con la última versión :thinking:.

Okay, ojalá sea solo un problema de la versión nocturna actual. Se solucionó configurando un proxy.

Hola @MoRanYue, ¿podrías explicar un poco más cómo lo resolviste?

Estoy enfrentando el mismo problema.

Gracias

@avidseeker
Cuando utilizas un servicio OSS y tu servidor no puede acceder a él, por ejemplo, estás en China y las conexiones de tu servidor a Cloudflare R2 están bloqueadas por el ISP local. Cuando los clientes intentan adquirir recursos de avatar personalizados, tu servidor tiene que adquirirlo del OSS, pero falla y luego devuelve 500 a los clientes.

En mi caso, estableciendo dos variables de entorno: HTTP_PROXY y HTTPS_PROXY a un servidor proxy que puede acceder a tu servicio OSS. Si instalaste Discourse con la instalación estándar, en tu app.xml debería tener un campo llamado env, añade esas dos variables y luego puedes ejecutar. Utilicé una instalación no compatible y uso Systemd para gestionar Discourse, así que añadí dos parámetros Environment en el archivo .service.

No sé si tu país tiene un sistema de censura de red. Si es así, puedo suponer que ya sabes qué hacer; si no, consulta el estado en línea de tu servicio OSS y tu configuración sobre S3.

1 me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.