diff --git a/src/Entity/VarnishPurgerSettings.php b/src/Entity/VarnishPurgerSettings.php
index eb1d781..ddd228d 100644
--- a/src/Entity/VarnishPurgerSettings.php
+++ b/src/Entity/VarnishPurgerSettings.php
@@ -41,11 +41,11 @@ class VarnishPurgerSettings extends PurgerSettingsBase implements PurgerSettings
   //
 
   /**
-   * The host or IP-address to connect to.
+   * The host(s) or IP-address(es) to connect to.
    *
-   * @var string
+   * @var array
    */
-  public $hostname = 'localhost';
+  public $hostname = [];
 
   /**
    * The port to connect to.
diff --git a/src/Plugin/Purge/Purger/VarnishPurger.php b/src/Plugin/Purge/Purger/VarnishPurger.php
index 19173d0..df2ea00 100644
--- a/src/Plugin/Purge/Purger/VarnishPurger.php
+++ b/src/Plugin/Purge/Purger/VarnishPurger.php
@@ -29,25 +29,27 @@ class VarnishPurger extends VarnishPurgerBase implements PurgerInterface {
     // Iterate every single object and fire a request per object.
     foreach ($invalidations as $invalidation) {
       $token_data = ['invalidation' => $invalidation];
-      $uri = $this->getUri($token_data);
+      $uris = $this->getUri($token_data);
       $opt = $this->getOptions($token_data);
 
-      try {
-        $this->client->request($this->settings->request_method, $uri, $opt);
-        $invalidation->setState(InvalidationInterface::SUCCEEDED);
-      }
-      catch (\Exception $e) {
-        $invalidation->setState(InvalidationInterface::FAILED);
-
-        // Log as much useful information as we can.
-        $headers = $opt['headers'];
-        unset($opt['headers']);
-        $debug = json_encode(str_replace("\n", ' ', [
-          'msg' => $e->getMessage(),
-          'uri' => $uri, 'method' => $this->settings->request_method,
-          'guzzle_opt' => $opt, 'headers' => $headers]));
-        $this->logger()->emergency("item failed due @e, details (JSON): @debug",
-          ['@e' => get_class($e), '@debug' => $debug]);
+      foreach ($uris as $uri) {
+        try {
+          $this->client->request($this->settings->request_method, $uri, $opt);
+          $invalidation->setState(InvalidationInterface::SUCCEEDED);
+        }
+        catch (\Exception $e) {
+          $invalidation->setState(InvalidationInterface::FAILED);
+
+          // Log as much useful information as we can.
+          $headers = $opt['headers'];
+          unset($opt['headers']);
+          $debug = json_encode(str_replace("\n", ' ', [
+            'msg' => $e->getMessage(),
+            'uri' => $uri, 'method' => $this->settings->request_method,
+            'guzzle_opt' => $opt, 'headers' => $headers]));
+          $this->logger()->emergency("item failed due @e, details (JSON): @debug",
+            ['@e' => get_class($e), '@debug' => $debug]);
+        }
       }
     }
   }
diff --git a/src/Plugin/Purge/Purger/VarnishPurgerBase.php b/src/Plugin/Purge/Purger/VarnishPurgerBase.php
index 4510647..63c6a7f 100644
--- a/src/Plugin/Purge/Purger/VarnishPurgerBase.php
+++ b/src/Plugin/Purge/Purger/VarnishPurgerBase.php
@@ -180,13 +180,17 @@ abstract class VarnishPurgerBase extends PurgerBase implements PurgerInterface {
    *   URL string representation.
    */
   protected function getUri($token_data) {
-    return sprintf(
-      '%s://%s:%s%s',
-      $this->settings->scheme,
-      $this->settings->hostname,
-      $this->settings->port,
-      $this->token->replace($this->settings->path, $token_data)
-    );
+    $uris = [];
+    foreach ($this->settings->hostname as $hostname) {
+      $uris[] = sprintf(
+        '%s://%s:%s%s',
+        $this->settings->scheme,
+        $hostname,
+        $this->settings->port,
+        $this->token->replace($this->settings->path, $token_data)
+      );
+    }
+    return $uris;
   }
 
   /**
