429 요청 초과, 좋은 건가요? (도움 부탁드립니다)

안녕하세요

저는 UptimeRobot을 사용 중인데, 일주일에 몇 번씩 1~5분 정도 429 에러가 발생하는데, 로그에서 확인되는 내용입니다.

근본 원인
HTTP 429 - Too Many Requests
사건 시작 시각
2026-08-23 10:42:58
해결 시각
2026-08-23 10:48:05
지속 시간
5분 7초
위치
Ashburn, USA - IP 5.161.75.7

저는 셀프 호스팅 환경이며, Discourse는 HestiaCP의 리버스 프록시를 통해 구성되어 있습니다.

log.txt (55.8 KB) 여기에 로그 첨부했습니다.

이 429 에러가 모든 사용자에게 발생한 것인지, 아니면 일부 사용자만 해당되는 것인지 알고 싶습니다.

Docker로 표준 설치했으며, 포트는 80만 사용하고 워커는 4개입니다.

RAM 8GB, 코어 8개 환경입니다.

업데이트: 제 PC에서 20~30개의 게시물을 열람하다가 429 에러가 발생했고, 다른 네트워크를 사용하는 제 스마트폰에서는 정상적으로 작동했습니다. 이는 429 에러가 모든 방문자가 아닌 특정 클라이언트에게만 발생한다는 것을 확인시켜 줍니다.

제가 잘못 안 거라면, 네, 요청을 연속해서 보내는 클라이언트에 영향을 미칠 뿐입니다.

무시해야 할까요, 아니면 한도를 늘리기 위해 무언가를 변경해야 할까요?

임계값을 조정하려면 다음을 참조하세요:

이는 아마도 모든 요청이 동일한 IP에서 온 것처럼 보이며, 많은 사용자가 429 오류를 겪고 있다는 뜻일 것입니다. admin/users 페이지로 가서 본인 및 다른 사용자의 IP 주소를 확인해 보세요. 두 주소가 동일하다면, 실제 IP가 Discourse로 전달되도록 설정을 구성해야 합니다.

방금 확인해봤는데 다른 사용자들과 내장 IP가 같은 걸로 나와요! :frowning:

이걸 어떻게 해결할 수 있을까요?

클라우드플레어 뒤에서 실행 중이신 건가요?

저도 이 게임을 플레이하고 있습니다 :slight_smile:

네, 하지만 문제는 모든 사용자가 동일한 IP를 사용한다는 거예요.

app.yml에 아래 내용을 추가했고, 지금 테스트 중입니다.

run:

  • replace:
    filename: /etc/nginx/conf.d/discourse.conf
    from: “server {”
    to: |
    server {
    set_real_ip_from 192.168.1.250;
    real_ip_header X-Forwarded-For;
    real_ip_recursive on;
  • exec: echo “Beginning of custom commands”
  • exec: echo “End of custom commands”

방금 데스크톱과 모바일 폰에서 테스트해봤습니다.

올바른 IP 주소를 얻고 있습니다 :smiley:

Cloudflare를 사용 중이시라면 Cloudflare 템플릿을 사용해야 합니다. 해당 주제에 대한 공식적인 토픽을 찾기가 불가능한 것 같으니, https://ask.discourse.com/ 을 시도해 보세요. 저는 AI가 생성한 메시지로 어떻게 해야 하는지는 알 수 있었지만, 그 논의가 어디에 있는지는 찾을 수 없었습니다. AI는 해결책을 찾아내는데 검색은 못 찾는다는 점이 슬프네요. :crying_cat:

음.. 네, ChatGPT한테 물어보고 백업도 먼저 해뒀다가 테스트를 해봤어요. 지금까지는 괜찮네요 :smiley:

저는 일반 AI 대신 https://ask.discourse.com/ 를 항상 사용하겠습니다. (단, 적극적으로 코딩을 하고 있고 AI가 Discourse 코드에 접근할 수 있는 경우를 제외합니다.)

이 부분이 해당 부분인가요?

  1. Cloudflare의 경우 cloudflare.template.yml을(를) app.yml 파일에 추가하세요.

위에서 찾은 솔루션의 대안인가요?

Cloudflare를 Discourse와 함께 사용한다면 해당 설정을 추가해야 합니다. @pfaffman이 언급했던 템플릿이 바로 그것이었나요?

설치 환경에 따라 달라질 것 같습니다.

저는 다음과 같이 설정되어 있습니다.

             ┌─────────────────────────┐
             │       Cloudflare        │
             │ WAF / CDN / DDoS / SSL  │
             └────────────┬────────────┘
                          │
                   실제 클라이언트 IP
                          │
                          ▼
             ┌─────────────────────────┐
             │   CentminMod Nginx      │
             │                         │
             │ cloudflare.conf         │
             │ 실제 IP 복원            │
             └────────────┬────────────┘
                          │
                   X-Forwarded-For
                   = 실제 클라이언트 IP
                          │
                          ▼
             ┌─────────────────────────┐
             │    Discourse Docker     │
             │                         │
             │ 신뢰할 수 있는 프록시   │
             │ 172.16.0.0/12           │
             └─────────────────────────┘

템플릿을 사용하면 IP가 외부로 노출된 IP가 아니라 Docker IP로 되돌아갑니다. 저는 nginx에서 이를 전달하고 있습니다.