Discourse 과부하: 실제 트래픽인지 DDOS인지? 트래픽 양이 적당하고 사양이 높은 서버인데도 CPU 사용률이 100%

IP 172.17.0.1은 아마도 Docker IP일 것입니다. 게시하신 로그가 discourse 컨테이너의 nginx 서비스에서 온 것이라고 추정합니다. 제 추측에 따르면, 호스트의 nginx가 discourse의 nginx로 요청을 보내고, discourse의 nginx가 호스트의 nginx에서 온 IP를 보고 있는 것으로 보입니다.

호스트의 nginx가 전송하는 헤더의 값으로 discourse의 실제 IP를 설정하거나, 소켓을 사용하여 nginx 서비스를 연결하는 방식으로 수정할 수 있습니다.

예를 들어, 호스트의 nginx에서는 proxy_set_header X-Real-IP $remote_addr;를 실행하고, discourse 컨테이너의 nginx에서는 이 헤더에 따라 실제 IP를 사용하도록 set_real_ip_from 0.0.0.0/0; (discourse nginx가 공개적으로 접근되지 않는다고 가정할 때)와 real_ip_header X-Real-IP;를 사용합니다. 아마도 이를 discourse의 nginx 설정 파일에 포함시키기 위해 템플릿이나 sed 명령을 실행해야 할 것입니다.

또 다른 옵션은 소켓을 사용하는 것이며, 다음 링크에 따라 web.socketed.template.yml을 포함할 수 있습니다:

하지만 가능할 경우, 제 추천은 discourse를 자체 서버에서 실행하여 앞에 nginx를 리버스 프록시로 사용하지 않는 것입니다. 이렇게 하면 설정이 훨씬 더 간단하고 쉬워집니다.