Retornando 500 ao solicitar avatares personalizados de usuários

Tentei carregar um avatar personalizado, ele pôde ser carregado com sucesso, mas ao solicitar https://example.com/user_avatar/example.com/example_user/96/11_2.png, ele retornou um erro 500. O avatar anônimo padrão não apresenta esse erro.

Último branch master do Discourse.
Cloudflare R2 é usado como meu armazenamento S3.

Você está em uma unsupported-install?

Em qualquer caso, 500 não é informação suficiente. Por favor, compartilhe as informações de log relacionadas e alguém poderá ajudá-lo.

2 curtidas

Claro. Aliás, usei o Cloudflare R2 (compatível com S3) para armazenar o conteúdo carregado. Quando verifiquei os arquivos no bucket, o arquivo de avatar estava realmente lá, mas os clientes não conseguiam acessá-lo com https://example.com/user_avatar/example.com/example_user/96/11_2.png, é tão estranho.

No production.log, encontrei esta linha:

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)

Isso pode estar relacionado a:

Pode ser um problema de S3 com a versão mais recente :thinking:.

Ok, espero que seja apenas um problema da versão noturna atual. Foi resolvido definindo um proxy.

Olá @MoRanYue, você poderia explicar melhor como você resolveu isso?

Estou enfrentando o mesmo problema.

Obrigado

@avidseeker
Quando você usa um serviço OSS e seu servidor não consegue acessá-lo, por exemplo, você está na China e as conexões do seu servidor com o Cloudflare R2 são bloqueadas pelo ISP local. Quando os clientes tentam adquirir recursos de avatar personalizados, seu servidor precisa adquiri-lo do OSS, mas falha, retornando 500 para os clientes.

No meu caso, definir duas variáveis de ambiente: HTTP_PROXY e HTTPS_PROXY para um servidor proxy que pode acessar seu serviço OSS. Se você instalou o Discourse com a instalação padrão, em seu app.xml ele deve ter um campo chamado env, adicione essas duas variáveis e então você pode executar. Eu usei instalação não suportada e uso o Systemd para gerenciar o Discourse, então adicionei dois parâmetros Environment no arquivo .service.

Não sei se seu país tem um sistema de censura de rede. Se sim, posso presumir que você já sabe o que fazer; Se não, verifique o status online do seu serviço OSS e suas configurações sobre S3.

1 curtida

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