429 طلبات كثيرة جداً، هل هذا جيد أم سيئ؟ (من فضلك ساعدوني)

مرحباً

أنا أستخدم UptimeRobot، وبضع مرات في الأسبوع أحصل على خطأ 429 لمدة تتراوح بين 1 إلى 5 دقائق، وهذا ما أراه في السجلات.

السبب الجذري
HTTP 429 - طلبات كثيرة جداً
بدأت الحادثة في
2026-08-23 10:42:58
تم حلها في
2026-08-23 10:48:05
المدة
5 دقائق و7 ثوانٍ

أنا أستضيف الخدمة بنفسي (Self-hosted) و Discourse يعمل خلف وكيل عكسي (Reverse Proxy) من HestiaCP

log.txt (55.8 KB) هذا هو السجل

أود أن أعرف ما إذا كان خطأ 429 قد أثر على جميع المستخدمين أم على عدد قليل فقط؟

أنا على تثبيت قياسي باستخدام Docker مع فتح المنفذ 80 فقط و4 عمال (Workers).

8 جيجابايت من الذاكرة العشوائية و8 أنوية معالجة

تحديث: أجريت اختباراً على حاسوبي من خلال فتح 20/30 منشوراً حتى حصلت على خطأ 429، بينما عمل كل شيء بشكل طبيعي على هاتفي عبر شبكة مختلفة. هذا يؤكد أن خطأ 429 يصيب عميلاً واحداً وليس جميع الزوار، أليس كذلك؟

إذا لم أكن مخطئًا، نعم، فهو يؤثر فقط على العميل الذي يرسل سلسلة الطلبات.

هل يجب أن أتجاهل هذا، أم يجب أن أغيّر شيئًا لزيادة الحد؟

إذا كنت ترغب في ضبط الحدود، راجع:

هذا على الأرجح يعني أن جميع الطلبات تبدو وكأنها قادمة من نفس عنوان IP، مما يؤدي إلى حصول العديد من المستخدمين على أخطاء 429. انتقل إلى admin/users وانظر إلى عنوان IP الذي تراه لنفسك وللمستخدم الآخر. إذا كانا متطابقين، فستحتاج إلى ضبط الإعدادات بحيث يصل عنوان IP الحقيقي إلى Discourse.

فحصت للتو وأكتشفت أن لديّ نفس عنوان IP الداخلي مثل المستخدمين الآخرين! :frowning:

كيف يمكنني إصلاح هذا؟

هل تعمل خلف Cloudflare؟

أواجه نفس المشكلة في هذه اللعبة أيضًا :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/ – تمكنت من الحصول على رسالة مولّدة بالذكاء الاصطناعي توضح ما يجب فعله، لكنني لم أجد مكان وجود النقاش حول ذلك. يحزنني أن الذكاء الاصطناعي يجد الحل بينما لا تفعل ميزة البحث. :crying_cat:

حسناً.. نعم سألت شات جي بي تي، وقمت بعمل نسخة احتياطية قبل ذلك ثم أجريت اختباراً. حتى الآن الأمور جيدة :smiley:

أنا دائمًا ما أستخدم https://ask.discourse.com/ بدلاً من الذكاء الاصطناعي العام (إلا إذا كنت تكتب أكوادًا بنشاط ولدى الذكاء الاصطناعي إمكانية الوصول إلى أكواد Discourse).

هل يكون هذا الجزء؟

  1. بالنسبة لـ Cloudflare، أضف cloudflare.template.yml إلى ملف app.yml الخاص بك.

هل هذا بديل للحل الذي وجدته أعلاه؟

إذا كنت تستخدم Cloudflare مع Discourse، فينبغي عليك إضافته. أعتقد أن هذا كان القالب الذي ذكره @pfaffman؟

أعتقد أنه يعتمد على إعداداتك.

لدي

             ┌─────────────────────────┐
             │       Cloudflare        │
             │ WAF / CDN / DDoS / SSL  │
             └────────────┬────────────┘
                          │
                   real client IP
                          │
                          ▼
             ┌─────────────────────────┐
             │   CentminMod Nginx      │
             │                         │
             │ cloudflare.conf         │
             │ restores real IP        │
             └────────────┬────────────┘
                          │
                   X-Forwarded-For
                   = real client IP
                          │
                          ▼
             ┌─────────────────────────┐
             │    Discourse Docker     │
             │                         │
             │ trusted proxy           │
             │ 172.16.0.0/12           │
             └─────────────────────────┘

إذا استخدمت القالب، فإن عنوان IP يعود إلى عنوان Docker وليس العنوان المُعرَّض. أنا أُمرِّر هذا عبر nginx.