Estou movendo uma instância Discourse existente de sua localização atual para uma VM AWS EC2.
O site fica atrás de balanceadores de carga da Amazon. Já ajustei com sucesso o app.yml com as diretivas apropriadas de set_real_ip_from para que o NGINX conheça os IPs do balanceador de carga. Sei que isso está funcionando porque consigo ver meu IP real quando verifico o último IP do meu usuário.
No entanto, ao tentar fazer o upload do backup de 375 MB do servidor antigo, o novo site começa a emitir erros 429 quando o arquivo está cerca de 35% carregado e o processo de upload falha. Os cabeçalhos nas respostas 429 identificam “discourse-rate-limit-error-code: id_10_secs_limit”.
Achei isso surpreendente. Mantive a janela de Ferramentas do Desenvolvedor do meu navegador aberta na aba “Network” e vi muitos pequenos pedaços sendo carregados (acho que eram 5 MB) bem rapidamente. Tenho uma conexão de Internet rápida de 200 Mbps, então talvez seja simplesmente muito rápido para as configurações padrão do limitador de taxa? Ou talvez a expectativa fosse que as tarefas administrativas fossem geralmente feitas de uma rede privada (o que não é possível com minha configuração AWS)?
Mas espere, tem mais! Tentei desabilitar o limitador de taxa comentando a linha “templates/web.ratelimited.template.yml” do app.yml e reconstruindo o aplicativo, mas isso não funcionou. Ainda recebi erros 429 quando meu arquivo estava cerca de 35% carregado.
Então, rapidamente adicionei as variáveis de ambiente abaixo ao arquivo app.yml, reconstruí e finalmente consegui fazer o upload do backup para restauração.
DISCOURSE_MAX_REQS_PER_IP_MODE: none
DISCOURSE_MAX_REQS_PER_IP_PER_10_SECONDS: 1000
Acredito que essas sejam configurações do limitador de taxa, então foi estranho ver algo respondendo a essas configurações quando o limitador de taxa estava supostamente desabilitado.
Resumindo - adoraria ter alguma orientação sobre:
- O limitador de taxa deveria bloquear uploads de backup assim?
- Por que o limitador de taxa não foi desabilitado quando comentei essa linha e reconstruí o aplicativo?
Obrigado!