diff --git a/app/models/user.rb b/app/models/user.rb
index cca5693bb..8f42ac3c7 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -475,6 +475,7 @@ class User < ActiveRecord::Base
       url.gsub! "{color}", letter_avatar_color(username.downcase)
       url.gsub! "{username}", username
       url.gsub! "{first_letter}", username[0].downcase
+      url.gsub! "{hostname}", RailsMultisite::ConnectionManagement.current_hostname
       url
     else
       "#{Discourse.base_uri}/letter_avatar/#{username.downcase}/{size}/#{LetterAvatar.version}.png"
diff --git a/config/nginx.sample.conf b/config/nginx.sample.conf
index 6e846f2a9..fa29fe8c8 100644
--- a/config/nginx.sample.conf
+++ b/config/nginx.sample.conf
@@ -192,6 +192,11 @@ server {
       break;
     }
 
+    location /letter_avatar_proxy {
+      rewrite /letter_avatar_proxy/(.*)$ /$1 break;
+      proxy_pass https://avatars.discourse.org;
+    }
+
     # this means every file in public is tried first
     try_files $uri @discourse;
   }
diff --git a/config/site_settings.yml b/config/site_settings.yml
index 149713872..81453913b 100644
--- a/config/site_settings.yml
+++ b/config/site_settings.yml
@@ -593,9 +593,9 @@ files:
     client: true
     shadowed_by_global: true
   external_system_avatars_url:
-    default: "https://avatars.discourse.org/v2/letter/{first_letter}/{color}/{size}.png"
+    default: "//{hostname}/letter_avatar_proxy/v2/letter/{first_letter}/{color}/{size}.png"
     client: true
-    regex: '^https?:\/\/.+[^\/]'
+    regex: '^((https?:)?\/)?\/.+[^\/]'
   default_opengraph_image_url: ''
 
 trust:
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 2f3fbfd27..1a6f028b2 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -912,7 +912,7 @@ describe User do
       expect(user.small_avatar_url).to eq("//test.localhost/letter_avatar/sam/45/#{LetterAvatar.version}.png")
 
       SiteSetting.external_system_avatars_enabled = true
-      expect(user.small_avatar_url).to eq("https://avatars.discourse.org/v2/letter/s/5f9b8f/45.png")
+      expect(user.small_avatar_url).to eq("//test.localhost/letter_avatar_proxy/v2/letter/s/5f9b8f/45.png")
     end
 
   end