Briefbilder vor Proxy-Server leer

Ich hatte vor einiger Zeit ein ähnliches Problem - Avatar images broken behind proxy

Buchstaben-Avatar-Bilder generieren einen 500-Fehler, wenn sie direkt geladen werden. Innerhalb des Docker-Containers kann ich https://avatars.discourse.org/ über unseren Proxy-Server sowie https://avatars.discourse-cdn.com/ abrufen.

Ich kann keine Fehler in den Protokollen finden, die darauf hindeuten würden, warum es fehlschlägt, weder in nginx noch in der Discourse production.log.

Haben Sie eine Idee, wo ich nach Fehlern suchen sollte, oder ob es etwas Offensichtliches gibt, das in den letzten ~Woche passiert ist, von dem ich nichts weiß?

Ich habe dieses Problem immer noch. Ich habe mir den Code genauer angesehen und wie erwartet ist https://avatars.discourse-cdn.com/#{params[:version]}/letter/#{params[:letter]}/#{params[:color]}/#{params[:size]}.png die tatsächliche Anfrage des Codes. Innerhalb des Discourse-Containers kann ich die Datei direkt mit wget herunterladen und erhalte ein gültiges PNG. Zum Beispiel: https://avatars.discourse-cdn.com/v4/letter/b/bcef8e/48.pnghttps://forum.pkp.sfu.ca/48.png

In production.log wird angezeigt, dass das Bild angeblich erfolgreich heruntergeladen wurde:


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)

Aus irgendeinem Grund erhalte ich immer noch ein leeres Bild. Vielleicht verwendet es nicht HTTP_PROXY oder HTTPS_PROXY oder so etwas.

In site_settings.yml steht, dass die Standard-URL für letter_avatar_proxy lautet: " /letter_avatar_proxy/v4/letter/{first_letter}/{color}/{size}.png" und wenn ich mit der rechten Maustaste auf eines der Bilder klicke, um die URL zu erhalten, ist sie (korrekterweise?) https://forum.pkp.sfu.ca/letter_avatar_proxy/v4/letter/b/bcef8e/48.png

Ein curl -I https://forum.pkp.sfu.ca/letter_avatar_proxy/v4/letter/r/4491bb/48.png gibt einen 500 Internal Server Error zurück.

Seltsamerweise scheine ich zwei GET-Anfragen zu erhalten. Ich frage mich, ob unser Loadbalancer falsch konfiguriert ist.

Bearbeiten: Okay, es ist nicht der LB, die Sache mit den zwei GET-Anfragen war eine falsche Fährte.

Das ist ziemlich frustrierend. Ich kann nicht herausfinden, warum Buchstaben-Avatar-Bilder 500 zurückgeben.

Ahhah, ich habe herausgefunden, dass Discourse einen EIGENEN LOG-BEREICH hat, der NUR ÜBER DIE WEB-BENUTZEROBERFLÄCHE ZUGÄNGLICH IST. /facepalm.

Dies erwähnt show_proxy_letter, es ist also wahrscheinlich relevant.

Nachricht (70085 Kopien gemeldet)

Fehler bei der Verarbeitung der gehijackten Antwort: EOFError: Ende der Datei erreicht

Backtrace

/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'

Ich habe externe Systemavatare vollständig deaktiviert.

1 „Gefällt mir“