صور الحروف فارغة خلف خادم البروكسي

كانت لدي مشكلة مماثلة منذ فترة - Avatar images broken behind proxy

صور صور الحروف الرمزية (Avatar images) تُنشئ خطأ 500 عند تحميلها مباشرة. من داخل حاوية Docker، يمكنني استخدام curl لـ https://avatars.discourse.org/ عبر خادم الوكيل الخاص بنا وكذلك https://avatars.discourse-cdn.com/.

لا يمكنني العثور على أي أخطاء في السجلات تشير إلى سبب فشلها، سواء في nginx أو discourse production.log.

هل لديك فكرة أين يجب أن أبحث عن الأخطاء، أو إذا كان هناك شيء واضح حدث في الأسبوع الماضي تقريبًا لا أعرف عنه؟

ما زلت أواجه هذه المشكلة. لقد تعمقت في الكود قليلاً، وكما توقعت، فإن https://avatars.discourse-cdn.com/#{params[:version]}/letter/#{params[:letter]}/#{params[:color]}/#{params[:size]}.png هو ما يطلبه الكود فعليًا. داخل حاوية Discourse، يمكنني استخدام wget لجلب الملف مباشرة والحصول على ملف PNG صالح. على سبيل المثال: https://avatars.discourse-cdn.com/v4/letter/b/bcef8e/48.pnghttps://forum.pkp.sfu.ca/48.png

في production.log، يظهر أن الصورة تم تنزيلها بنجاح، مزعومًا:

Started GET "/presence/get?channels%5B%5D=%2Fdiscourse-presence%2Freply%2F88689&channels%5B%5D=%2Fdiscourse-presence%2Fwhisper%2F88689" for 172.17.1.79 at 2024-07-09 19:59:01 +0000
Processing by PresenceController#get as JSON
Parameters: {"channels"=>["/discourse-presence/reply/88689", "/discourse-presence/whisper/88689"]}
Processing by UserAvatarsController#show_proxy_letter as PNG
Parameters: {"version"=>"v4", "letter"=>"b", "color"=>"bcef8e", "size"=>"48"}
Completed 200 OK in 14ms (Views: 0.5ms | ActiveRecord: 0.0ms | Allocations: 3095)
Completed 418  in 9ms (Views: 0.4ms | ActiveRecord: 0.0ms | Allocations: 1680)

لذا لسبب ما، ما زلت أحصل على صورة فارغة. ربما لا يستخدم HTTP_PROXY أو HTTPS_PROXY أو شيء من هذا القبيل.

في site_settings.yml، يذكر أن عنوان URL الافتراضي لـ letter_avatar_proxy هو: " /letter_avatar_proxy/v4/letter/{first_letter}/{color}/{size}.png" وعندما أنقر بزر الماوس الأيمن على إحدى الصور للحصول على عنوان URL، فإنه (بشكل صحيح؟) https://forum.pkp.sfu.ca/letter_avatar_proxy/v4/letter/b/bcef8e/48.png

إجراء curl -I https://forum.pkp.sfu.ca/letter_avatar_proxy/v4/letter/r/4491bb/48.png يُرجع خطأ داخلي 500.

من الغريب أنني أحصل على طلبين GET. أتساءل عما إذا كان موازن التحميل الخاص بنا تم تكوينه بشكل خاطئ.

تعديل: حسنًا، لم يكن موازن التحميل، فمسألة طلبي GET المزدوجين كانت مجرد تضليل.

هذا محبط للغاية. لا أستطيع معرفة سبب ظهور صور صور الأحرف بحالة 500.

أوه، اكتشفت أن Discourse لديه قسم سجل خاص به يمكن الوصول إليه فقط عبر واجهة مستخدم الويب. /وجه مصدوم.

يذكر هذا show_proxy_letter لذا فهو على الأرجح ذو صلة.

رسالة (تم الإبلاغ عن 70085 نسخة)

فشل في معالجة الاستجابة المختطفة بشكل صحيح: EOFError: نهاية الملف تم الوصول إليها

تتبع المكدس

/usr/local/lib/ruby/3.3.0/net/protocol.rb:237:in `rbuf_fill'
/usr/local/lib/ruby/3.3.0/net/protocol.rb:199:in `readuntil'
/usr/local/lib/ruby/3.3.0/net/protocol.rb:209:in `readline'
/usr/local/lib/ruby/3.3.0/net/http/response.rb:158:in `read_status_line'
/usr/local/lib/ruby/3.3.0/net/http/response.rb:147:in `read_new'
/usr/local/lib/ruby/3.3.0/net/http.rb:1625:in `connect'
/var/www/discourse/lib/final_destination/http.rb:27:in `block in connect'
/var/www/discourse/lib/final_destination/http.rb:17:in `each'
/var/www/discourse/lib/final_destination/http.rb:17:in `each_with_index'
/var/www/discourse/lib/final_destination/http.rb:17:in `connect'
/usr/local/lib/ruby/3.3.0/net/http.rb:1580:in `do_start'
/usr/local/lib/ruby/3.3.0/net/http.rb:1569:in `start'
/usr/local/lib/ruby/3.3.0/net/http.rb:1029:in `start'
/var/www/discourse/lib/final_destination.rb:556:in `safe_session'
/var/www/discourse/lib/final_destination.rb:491:in `safe_get'
/var/www/discourse/lib/final_destination.rb:170:in `get'
/var/www/discourse/lib/file_helper.rb:73:in `download'
/var/www/discourse/app/controllers/user_avatars_controller.rb:176:in `proxy_avatar'
/var/www/discourse/app/controllers/user_avatars_controller.rb:54:in `block in show_proxy_letter'
/var/www/discourse/lib/hijack.rb:64:in `instance_eval'
/var/www/discourse/lib/hijack.rb:64:in `block in hijack'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/promises.rb:911:in `callback_on_resolution'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/promises.rb:797:in `call_callback'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/promises.rb:803:in `call_callbacks'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/promises.rb:692:in `resolve_with'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/promises.rb:1325:in `resolve'
/var/www/discourse/lib/scheduler/defer.rb:115:in `block in do_work'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.0.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.0.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/var/www/discourse/lib/scheduler/defer.rb:109:in `do_work'
/var/www/discourse/lib/scheduler/defer.rb:97:in `block (2 levels) in start_thread'

لقد قمت بإيقاف تشغيل صور الأنظمة الخارجية بالكامل.

إعجاب واحد (1)