“إذا تم استلام رسالة تحتوي على كل من حقل رأس Transfer-Encoding وحقل رأس Content-Length، فيجب تجاهل الأخير.” *
… ولكنه يتسبب في تعثر Nginx والإعلان عن 502 وعدم تقديم الأصل، لذا فهذا غير مهم.
يمكنني تصفح ملف css باستخدام curl مباشرة إلى الحاوية على localhost، ولكن على مستوى nginx، فإنه غير سعيد:
أرسل الخادم الوكيل الرأسي "Content-Length" و "Transfer-Encoding" في نفس الوقت أثناء قراءة رأس الاستجابة من الخادم الوكيل
هل لدى أي شخص أي أفكار حول كيفية إيقاف Ember CLI عن القيام بذلك أو حل بديل؟ أنا متفاجئ من أن هذه ليست مشكلة مع التثبيت القياسي؟ (لأن سلسلة الاتصال يجب أن تكون متشابهة جدًا).
نحن نستخدم فقط وكالة Ember CLI في التطوير. في التثبيت القياسي، تذهب الطلبات من المستخدم → NGINX → Rails. أقترح الالتزام بهذا النمط - لم نصمم تكوين Ember CLI الخاص بنا للاستخدام في الإنتاج. حتى لو تمكنت من جعله يعمل (وهو أمر لن يكون سهلاً) فمن المحتمل أن تكون هناك مخاوف أمنية و/أو تتعلق بالأداء.
لدي تثبيتان، كلاهما إعدادات “تطوير”، هذا الإعداد وإعداد آخر غير Docker على Ubuntu.
ألاحظ أن الاستدعاءات إلى /stylesheets/ على خادم التطوير غير Docker لا تتضمن “Transfer-Ecoding: chunked” في الرأس من خادم Rails وبدلاً من ذلك تتضمن قيمة “Content-Length”… هل يمكن لأي شخص شرح كيف يمكن أن يكون ذلك مختلفًا؟
لقد خدعت النظام بنجاح. أجبرت على ترويسة Content-Length عن طريق تجاوز StylesheetsController، مما يمنع الاستجابة المجزأة، ويتجاوز عادة Ember CLI السيئة، ويتجنب حساسية nginx غير المطابقة للمواصفات.
كيف توصلت إلى هذا الحل كان بملاحظة إعداد آخر لـ Ember CLI/nginx عبر https، حيث اختارت Rails عدم تجزئة استجابات الأنماط (هل يعرف أحد لماذا قد يكون هذا هو الحال؟). أدى ذلك بي إلى محاولة فرض الترويسة، ويا للعجب، لقد نجح الأمر!
هذا مطلوب فقط في بيئة التطوير، لذلك لست قلقًا للغاية.