Discourse überlastet echter Verkehr oder DDOS? 100% CPU-Auslastung trotz ordentlichem Traffic und High-Spec-Server

Die IP 172.17.0.1 ist wahrscheinlich eine Docker-IP. Ich gehe davon aus, dass die von dir geposteten Logs vom Nginx-Dienst im Discourse-Container stammen. Meine Vermutung ist, dass der Nginx auf deinem Host die Anfrage an den Nginx in Discourse weiterleitet und der Nginx in Discourse dabei die IP-Adresse des Nginx auf deinem Host sieht.

Du solltest das Problem entweder lösen können, indem du die echte IP in Discourse auf den Wert eines Headers setzt, der vom Nginx auf dem Host gesendet wird, oder indem du einen Socket zur Verbindung der Nginx-Dienste verwendest.

Beispielsweise setzt du im Nginx auf dem Host proxy_set_header X-Real-IP $remote_addr;, und im Nginx des Discourse-Containers würdest du die echte IP entsprechend dieses Headers verwenden: set_real_ip_from 0.0.0.0/0; (unter der Annahme, dass der Discourse-Nginx nicht öffentlich erreichbar ist) sowie real_ip_header X-Real-IP;. Du wirst wahrscheinlich eine Vorlage benötigen oder einen sed-Befehl ausführen, um dies in die Nginx-Konfigurationsdatei in Discourse aufzunehmen.

Eine weitere Option ist die Verwendung von Sockets und die Einbindung der web.socketed.template.yml gemäß:

Meine Empfehlung ist jedoch, wenn es finanziell machbar ist, Discourse auf einem eigenen Server zu betreiben, ohne Nginx als Reverse-Proxy davor verwenden zu müssen. Das würde die Einrichtung deutlich direkter und einfacher gestalten.