diff --git a/wp-nginx-map-json.php b/wp-nginx-map-json.php
new file mode 100644
index 0000000000000000000000000000000000000000..b5f9490ae0305c6cc459f39bfe848ac14b5d5668
--- /dev/null
+++ b/wp-nginx-map-json.php
@@ -0,0 +1,47 @@
+<?php
+
+// wp-nginx-map.php (JSON version)
+
+// Load wordpress api.
+define('WP_CACHE',false);
+require_once('/opt/noblogs/www/wp-load.php');
+
+// Return all blogs.
+function get_blogs() {
+  global $wpdb;
+  $sql = "SELECT blog_id, domain FROM $wpdb->blogs WHERE deleted = 0 AND archived = '0' ORDER BY domain ASC";
+  $result = $wpdb->get_results($sql);
+  return ($result);
+}
+
+function backend_to_shard_id($backend) {
+  if (substr($backend, 0, 8) != 'backend_') {
+    error_log('diamine, di questo backend non so che farmene: ' . $backend);
+    return '0';
+  }
+  return substr($backend, 8);
+}
+
+// Print the blog -> shard_id map.
+function generate_shard_map($blogs) {
+  global $wpdb;
+  $wpdb_hash = &$wpdb->hash_map;
+
+  $shard_map = array();
+  foreach ($blogs as $blog) {
+    $blog_id = $blog->blog_id;
+    if ($blog_id == 1)
+      continue;
+    $backend_id = $wpdb_hash->lookup($blog_id);
+    $shard_id = backend_to_shard_id($backend_id);
+    $shard_map[$blog->domain] = $shard_id;
+  }
+  echo json_encode($shard_map);
+}
+
+function generate_maps() {
+  $all_blogs = get_blogs();
+  generate_shard_map($all_blogs);
+}
+
+generate_maps();