نحن نستخدم Discourse في حاوية Docker. لدينا حدود للمعدل معدة بعنوان IP مدرج في القائمة البيضاء. ومع ذلك، ما زلنا نتلقى أخطاء تجاوز حدود المعدل عند إجراء طلبات من هذا الـ IP. أنا متأكد من أن إعداد Nginx صحيح، إليك كيف يبدو:
تم تكوين Nginx لتسجيل خطأ في حالة الوصول إلى حد المعدل ونحن بالفعل نرى بعض رسائل السجل - ولكن لا شيء من الـ IP المدرج في القائمة البيضاء. ومع ذلك، ما زلنا نتلقى الكثير من رسائل 429 عند إجراء طلبات من الـ IP المدرج في القائمة البيضاء. عناوين URL للطلبات هي ملفات تعريف المستخدمين (على سبيل المثال، /users/foo.json). هل هناك نوع من حدود المعدل في Discourse نفسها؟
مرحباً، Nginx يدير بالفعل تحديد المعدل كما ذكرت، ولكن لدى Discourse أيضًا طريقته الخاصة لإدارة تحديد المعدل على مستوى التطبيق. لدى سام مقال مثير للاهتمام حول هذا الموضوع:
الشيء الوحيد الذي أتساءل عنه هو ما إذا كان يمكننا بالفعل تحديد المعدل مع استثناءات (أي، وضع قائمة بيضاء للعناوين IP من خلال هذه القواعد). ما زلت أبحث عن طريقة للقيام بذلك…
أنا أيضًا أواجه حدًا للمعدل وهو 60 استدعاء لواجهة برمجة التطبيقات في الدقيقة، ولا يبدو أنني أستطيع تخفيفه. لقد قمت بتعيين كل هذه:\n\n - DISCOURSE_MAX_REQS_PER_IP_MODE=none\n - DISCOURSE_MAX_USER_API_REQS_PER_MINUTE=20000\n - DISCOURSE_MAX_USER_API_REQS_PER_DAY=30000\n - DISCOURSE_MAX_ADMIN_API_REQS_PER_MINUTE=20000\n - DISCOURSE_MAX_REQS_PER_IP_PER_MINUTE=20000\n - DISCOURSE_MAX_REQS_PER_IP_PER_10_SECONDS=2000\n - DISCOURSE_MAX_ASSET_REQS_PER_IP_PER_10_SECONDS=2000\n - DISCOURSE_SKIP_PER_IP_RATE_LIMIT_TRUST_LEVEL=0\n - DISCOURSE_MAX_ADMIN_API_REQS_PER_KEY_PER_MINUTE=20000\n - DISCOURSE_MESSAGE_BUS_MAX_BACKLOG_SIZE=1000\n - DISCOURSE_MAX_REQS_PER_IP_EXCEPTIONS=....\n\nأعلم أن الأمر ليس nginx لأنني أتلقى رسالة “لقد قمت بهذا الإجراء عدة مرات”، مما يعني أن Discourse RateLimiter يتعامل مع الأمر.\n\nهل وجدت حلاً؟