Restituisce 500 quando si richiedono avatar personalizzati degli utenti

Ho provato a caricare un avatar personalizzato, è stato caricato correttamente, ma quando richiedo https://example.com/user_avatar/example.com/example_user/96/11_2.png, restituisce solo un errore 500. L’avatar anonimo predefinito non presenta questo errore.

Ultimo branch master di Discourse.
Cloudflare R2 viene utilizzato come mio storage S3.

Sei su un unsupported-install?

In ogni caso, 500 da solo non è un’informazione sufficiente. Condividi le informazioni di log correlate e qualcuno potrebbe aiutarti.

2 Mi Piace

Certamente. A proposito, ho utilizzato Cloudflare R2 (compatibile con S3) per archiviare i contenuti caricati; quando ho controllato i file nel bucket, il file dell’avatar era effettivamente presente, ma i client non potevano accedervi con https://example.com/user_avatar/example.com/example_user/96/11_2.png, è così strano.

In production.log, I found this line:

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)

Potrebbe essere correlato a:

Potrebbe essere un problema S3 con l’ultima versione :thinking:.

Ok, spero sia solo un problema della versione nightly attuale. È stato risolto impostando un proxy.

Ehi @MoRanYue, potresti spiegare meglio come hai risolto?

Sto affrontando lo stesso problema.

Grazie

@avidseeker
Quando si utilizza un servizio OSS e il proprio server non è in grado di accedervi, ad esempio, ci si trova in Cina e le connessioni del server a Cloudflare R2 sono bloccate dall’ISP locale. Quando i client tentano di acquisire risorse di avatar personalizzate, il server deve acquisirle dall’OSS, ma fallisce, restituendo quindi 500 ai client.

Nel mio caso, impostando due variabili d’ambiente: HTTP_PROXY e HTTPS_PROXY su un server proxy in grado di accedere al tuo servizio OSS. Se hai installato Discourse con l’installazione standard, nel tuo app.xml dovrebbe esserci un campo chiamato env, aggiungi quelle due variabili e poi puoi eseguire. Ho utilizzato un’installazione non supportata e uso Systemd per gestire Discourse, quindi ho aggiunto due parametri Environment nel file .service.

Non so se il tuo paese abbia un sistema di censura di rete. In tal caso, posso presumere che tu sappia già cosa fare; in caso contrario, controlla lo stato online del tuo servizio OSS e le tue impostazioni relative a S3.

1 Mi Piace

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