كيف يتم تخزين وتفعيل الصور الرمزية؟

TL;DR: I’m having trouble understanding how avatars are accessed on S3.

I’m in the process of moving my Discourse over to AWS, where all the rest of my websites are. I’m a huge proponent of CloudFront, not just as a traditional CDN, but as a Varnish-like front-end with multiple origins. I like to route all of my traffic through CloudFront, where requests are then sent to S3 buckets or web servers based on a number of rules.

I’m doing this for the first time with Discourse, and S3 uploads are facilitating this. Unfortunately, I’m having a tough time understanding how avatars are accessed. They appear to be uploaded to the S3 bucket in the same manner as post uploads, but not in the user_avatar directory as they’re referenced in the image path. With S3 uploads enabled, newly-uploaded avatars appear to be missing locally and remotely. Are avatar image paths actually URL rewrites to images under the uploads directory? Or am I missing something?

Are they any upload-related errors in the /logs?

Are you S3 settings correct?

Yes. Working great for uploads into topics. But, like I said, there is no user_avatar directory in S3. Should there be?

There was this, which probably has something to do with the fact that the S3 CDN URL I have set matches the base URL of my website, but this was the intention. My configuration is probably much different than other Discourse installs, so I just need to know how avatars are processed, stored, and accessed so I can make any special accommodations.

OpenURI::HTTPError (404 Not Found) /usr/local/lib/ruby/2.3.0/open-uri.rb:359:in open_http’`

/usr/local/lib/ruby/2.3.0/open-uri.rb:359:in `open_http'
/usr/local/lib/ruby/2.3.0/open-uri.rb:737:in `buffer_open'
/usr/local/lib/ruby/2.3.0/open-uri.rb:212:in `block in open_loop'
/usr/local/lib/ruby/2.3.0/open-uri.rb:210:in `catch'
/usr/local/lib/ruby/2.3.0/open-uri.rb:210:in `open_loop'
/usr/local/lib/ruby/2.3.0/open-uri.rb:151:in `open_uri'
/var/www/discourse/lib/freedom_patches/open_uri_redirections.rb:70:in `open_uri'
/usr/local/lib/ruby/2.3.0/open-uri.rb:717:in `open'
/var/www/discourse/lib/file_helper.rb:17:in `block in download'
/var/www/discourse/lib/file_helper.rb:16:in `open'
/var/www/discourse/lib/file_helper.rb:16:in `download'
/var/www/discourse/app/controllers/user_avatars_controller.rb:135:in `proxy_avatar'
/var/www/discourse/app/controllers/user_avatars_controller.rb:108:in `show_in_site'
/var/www/discourse/app/controllers/user_avatars_controller.rb:69:in `block in show'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/rails_multisite-1.0.6/lib/rails_multisite/connection_management.rb:46:in `with_hostname'
/var/www/discourse/app/controllers/user_avatars_controller.rb:68:in `show'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_controller/metal/implicit_render.rb:4:in `send_action'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/abstract_controller/base.rb:198:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_controller/metal/rendering.rb:10:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/abstract_controller/callbacks.rb:20:in `block in process_action'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:117:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:555:in `block (2 levels) in compile'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:505:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:92:in `__run_callbacks__'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:778:in `_run_process_action_callbacks'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:81:in `run_callbacks'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/abstract_controller/callbacks.rb:19:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_controller/metal/rescue.rb:29:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_controller/metal/instrumentation.rb:32:in `block in process_action'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/notifications.rb:164:in `block in instrument'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/notifications.rb:164:in `instrument'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_controller/metal/instrumentation.rb:30:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.7.1/lib/active_record/railties/controller_runtime.rb:18:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/abstract_controller/base.rb:137:in `process'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionview-4.2.7.1/lib/action_view/rendering.rb:30:in `process'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/rack-mini-profiler-0.10.1/lib/mini_profiler/profiling_methods.rb:76:in `block in profile_method'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_controller/metal.rb:196:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_controller/metal.rb:237:in `block in action'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/routing/route_set.rb:74:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/routing/route_set.rb:43:in `serve'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/journey/router.rb:43:in `block in serve'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/journey/router.rb:30:in `each'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/journey/router.rb:30:in `serve'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/routing/route_set.rb:817:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/frame_options.rb:31:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:186:in `call!'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:164:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:186:in `call!'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:164:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:186:in `call!'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:164:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:186:in `call!'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:164:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:186:in `call!'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:164:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:186:in `call!'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:164:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:186:in `call!'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:164:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/builder.rb:63:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/rack/agent_hooks.rb:30:in `traced_call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/rack/browser_monitoring.rb:32:in `traced_call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/rack-1.6.4/lib/rack/conditionalget.rb:25:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/rack-1.6.4/lib/rack/head.rb:13:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/lib/middleware/anonymous_cache.rb:129:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/middleware/params_parser.rb:27:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/middleware/flash.rb:260:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/rack-1.6.4/lib/rack/session/abstract/id.rb:225:in `context'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/rack-1.6.4/lib/rack/session/abstract/id.rb:220:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/middleware/cookies.rb:560:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.7.1/lib/active_record/query_cache.rb:36:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.7.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:653:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:88:in `__run_callbacks__'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:778:in `_run_call_callbacks'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:81:in `run_callbacks'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/middleware/callbacks.rb:27:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/middleware/remote_ip.rb:78:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/logster-1.2.5/lib/logster/middleware/reporter.rb:31:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/config/initializers/100-silence_logger.rb:24:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/middleware/request_id.rb:21:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/rack-1.6.4/lib/rack/methodoverride.rb:22:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/rack-1.6.4/lib/rack/runtime.rb:18:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/rack-1.6.4/lib/rack/sendfile.rb:113:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/rack-mini-profiler-0.10.1/lib/mini_profiler/profiler.rb:171:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/message_bus-2.0.2/lib/message_bus/rack/middleware.rb:62:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/lib/middleware/request_tracker.rb:73:in `call'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/railties-4.2.7.1/lib/rails/engine.rb:518:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/railties-4.2.7.1/lib/rails/application.rb:165:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/railties-4.2.7.1/lib/rails/railtie.rb:194:in `public_send'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/railties-4.2.7.1/lib/rails/railtie.rb:194:in `method_missing'
/var/www/discourse/plugins/new_relic-discourse/gems/2.3.1/gems/newrelic_rpm-3.16.2.321/lib/new_relic/agent/instrumentation/middleware_tracing.rb:96:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/rack-1.6.4/lib/rack/urlmap.rb:66:in `block in call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/rack-1.6.4/lib/rack/urlmap.rb:50:in `each'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/rack-1.6.4/lib/rack/urlmap.rb:50:in `call'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/unicorn-5.2.0/lib/unicorn/http_server.rb:562:in `process_client'
/var/www/discourse/lib/scheduler/defer.rb:85:in `process_client'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/unicorn-5.2.0/lib/unicorn/http_server.rb:658:in `worker_loop'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/unicorn-5.2.0/lib/unicorn/http_server.rb:508:in `spawn_missing_workers'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/unicorn-5.2.0/lib/unicorn/http_server.rb:132:in `start'
/var/www/discourse/vendor/bundle/ruby/2.3.0/gems/unicorn-5.2.0/bin/unicorn:126:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.3.0/bin/unicorn:23:in `load'
/var/www/discourse/vendor/bundle/ruby/2.3.0/bin/unicorn:23:in `<main>'

Sorry, I misread your original post and misunderstood your question.

When S3 is enabled, avatars are stored like any other images: in the “/original” directory for the uploaded file and in the “/optimized” directory for the different thumbnails.

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

When I enable S3, newly-updated avatars still use the same URL scheme, for example: https://critcola.com/community/user_avatar/critcola.com/d3/120/676_1.png

Yeah, that’s because we proxy them in order to deal with ‘unknown’ size (the “120” in your URL) and whatnot.

https://github.com/discourse/discourse/blob/master/app/controllers/user_avatars_controller.rb#L75-L120

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

Got it. So the avatars that are displayed in posts and profiles are still stored on S3, but use that URL scheme as an internal rewrite?

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

This topic was automatically closed after 2759 days. New replies are no longer allowed.