Discourse sobrecarregado tráfego real ou DDOS? Uso de CPU 100% apesar de tráfego decente e servidor com especificações altas

O IP 172.17.0.1 provavelmente é um IP do Docker. Suponho que os logs que você postou sejam do serviço nginx no contêiner do Discourse. Minha aposta é que o nginx no seu host está enviando a solicitação para o nginx no Discourse, e o nginx no Discourse está enxergando o IP do nginx no seu host.

Você deve ser capaz de corrigir isso configurando o IP real no Discourse para ser o valor de um cabeçalho enviado pelo nginx no host, ou usando um socket para conectar os serviços nginx.

Por exemplo, no nginx do host, você faz proxy_set_header X-Real-IP $remote_addr;, e no nginx do contêiner do Discourse, você usaria o IP real de acordo com esse cabeçalho: set_real_ip_from 0.0.0.0/0; (assumindo que o nginx do Discourse não seja acessado publicamente) e real_ip_header X-Real-IP;. Provavelmente, você precisará de um template ou executar algum comando sed para incluí-lo no arquivo de configuração do nginx no Discourse.

Outra opção é usar sockets e incluir o web.socketed.template.yml conforme:

Mas minha recomendação, se viável financeiramente, é usar o Discourse em seu próprio servidor, sem precisar usar o nginx como um proxy reverso na frente, o que tornaria a configuração muito mais direta e fácil.