Estou executando uma instância multi-servidor MinIO atrás de um servidor proxy Nginx.
Para a integração do MinIO, tive problemas e hoje descobri que preciso definir ‘S3 CDN URL’ não como ‘cdn.example.com’, mas como ‘cdn.example.com/nome_do_bucket’ para exibir imagens carregadas.
Pode ser um problema de configuração do meu próprio MinIO, então vou fornecer mais algumas informações aqui.
Tenho dois servidores executando MinIO para os mesmos conteúdos. Ambos são mapeados com IP interno, como 192.168.1.1 e 192.168.1.2. A porta de acesso à API é, digamos, 9000, e a porta de acesso ao Console é 9001. (Embora eu use IPs e Portas diferentes, mas para fins de ilustração.)
Tive problemas com o ‘S3 endpoint’ inicialmente.
Com ‘https://cdn.example.com’ como endpoint, continuei recebendo erros. Também tentei com acesso ao console, como ‘s3.example.com’, a URL que uso para distribuir tráfego no nível do servidor proxy Nginx para o console. Nenhum deles funcionou.
Hoje, alterei o endpoint para ‘http://192.168.1.1:9000’, como faço com o NextCloud. (Tive problemas semelhantes com o NextCloud). Finalmente, pude ver que os arquivos são carregados no S3. No entanto, ainda não conseguia ver a imagem no Discourse. Quando verifiquei a URL da imagem em branco, era como ‘cdn.example.com/original/1x/…’ Em outras palavras, faltava o nome do bucket S3 que adicionei à configuração.
Então, alterei ‘S3 CDN URL’ para ‘https://cdn.example.com/meu_nome_do_bucket’. Finalmente, consigo ver a imagem na edição do tópico do Discourse, bem como no site ativo.
Como está funcionando, eu ia parar e voltar para os meus outros sites, mas então, vejo que ‘S3 Backup Bucket’ tem que ser um nome de bucket diferente do bucket de upload principal. Se eu habilitar ‘Use CDN URL for all the files uploaded to s3 instead of only for images’, o que acontece com o backup S3? Ele fará o upload do arquivo de backup para ‘https://cdn.example.com/bucket_de_backup’?
Então, tentei executar um backup. Como esperado, recebi a mensagem de erro para o backup.
Por enquanto, a menos que eu tenha configurado mal o MinIO e/ou o Discourse, acho que faz sentido que ‘S3 CDN URL’ deva anexar o nome do bucket de upload principal e o nome do bucket de backup. Então, eu poderia voltar de ‘https://cdn.example.com/meu_nome_do_bucket’ para ‘https://cdn.example.com’.
Além disso, prefiro não usar o IP interno como ‘S3 endpoint’. Fiz a mesma pergunta ao Nextcloud. Como funciona o módulo S3 do Discourse? Só queria saber por que preciso fornecer o IP interno completo + porta em vez do FQDN que atribuí no nível do servidor proxy. O FQDN certamente me ajuda a redirecionar o tráfego se um dos servidores MinIO falhar. Com a configuração atual, se o servidor principal falhar, a leitura pode funcionar (pela CDN), mas as ações de gravação não.