URL do CDN S3 com nome do bucket? - MinIO

,

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.

Pode ser, ou eu diria, mais provavelmente é devido à minha má configuração e/ou incompatibilidade com o MinIO/AWS SDK. Vou me contentar com uma solução alternativa por enquanto.

Parece que você está usando buckets no estilo de caminho (minio.example.com/bucketname), o que não funcionará. Você deve configurar MINIO_DOMAIN, que ativará implicitamente buckets no estilo de host virtual (bucketname.minio.example.com)

Veja Core Settings | AIStor Object Store Documentation

Obrigado pela resposta rápida.

Então, só me pergunto por que o URL da imagem não era ‘bucketname.cdn.example.com’?
Foi porque adicionei o URL da CDN que funciona como o URL do CloudFront? No meu caso, sem o URL da CDN, temo que o caminho do arquivo de imagem possa ser http://bucket_name.192.168.1.1:9000/original/1x/…

Se de fato eu tiver que atribuir um FQDN a cada MinIO do servidor e tiver que usar um dos FQDN como ponto de extremidade, então o servidor múltiplo para balanceamento de carga é inútil.