يظهر لي خطأ في ملف السجل (log file) مفاده أنه لا يمكنه الوصول إلى /uploads/....
لا يمكن الوصول إلى '/uploads/default/original/1X/fe2af548af4a22f4802ddaa54afa557ae557417c.png' للحصول على أبعادها.
يمكنني الوصول إلى الصورة دون مشاكل إذا أدخلت الرابط في متصفح ويب:
https://domain.com/uploads/default/original/1X/fe2af548af4a22f4802ddaa54afa557ae557417c.png
تم الإنجاز بنجاح 200 OK خلال 23 مللي ثانية (Views: 0.3ms | ActiveRecord: 0.0ms | Allocations: 3000)
تم الإنجاز بنجاح 200 OK خلال 318 مللي ثانية (Views: 1.2ms | ActiveRecord: 0.0ms | Allocations: 50347)
لا يمكن الوصول إلى '/uploads/default/original/1X/fe2af548af4a22f4802ddaa54afa557ae557417c.png' للحصول على أبعادها.
بدأت عملية GET "/posts/96" من عنوان 84.115.50.36 في 2020-07-04 14:15:14 +0000
معالجة بواسطة PostsController#show بصيغة JSON
المعاملات: {"id"=>"96"}
لا يظهر لي أي خطأ عند عدم فرض استخدام HTTPS.
تم الإنجاز بنجاح 200 OK خلال 18 مللي ثانية (Views: 0.3ms | ActiveRecord: 0.0ms | Allocations: 3050)
تم الإنجاز بنجاح 200 OK خلال 296 مللي ثانية (Views: 0.5ms | ActiveRecord: 0.0ms | Allocations: 49562)
بدأت عملية GET "/posts/97" من عنوان 84.115.50.36 في 2020-07-04 14:17:43 +0000
معالجة بواسطة PostsController#show بصيغة JSON
المعاملات: {"id"=>"97"}
يبدو لي أن Discourse يقوم بتحميل الصورة مرة أخرى من خادم الويب لسبب ما للقيام ببعض عمليات عرض الصور (lightbox).
إذا قمت بتحميل هذه الصورة يدويًا داخل حاوية Docker الخاصة بـ Discourse، فإنها تحاول الوصول إلى خادم الويب مباشرةً عبر عنوان IP الداخلي بدلاً من الوصول إليه عبر الوكيل (proxy). وهذا يعمل عبر HTTP، لكنه لا يعمل عبر HTTPS.
خادم الويب نفسه يدعم HTTP فقط، لكنه يحاول الوصول إليه عبر HTTPS مما يؤدي إلى الفشل.
أتساءل لماذا يقوم Discourse بتحميل الصورة مرة أخرى من خادم الويب بدلاً من الوصول إليها داخليًا دون استخدام HTTP/HTTPS.
تعديل: اكتشفت أنني قمت بإعادة تسمية ملف app.yml إلى domain.name.yml، مما تسبب في تغيير Docker لاسم النطاق (DNS name) الخاص بـ domain.name إلى عنوان IP الداخلي الخاص به. قمت بإعادة تسميته إلى domain_name.yml، وعمل كل شيء بشكل جيد الآن.