diff --git a/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod b/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod
index be6b7eea19aa8cf51602cabfb4f3422bb092ca69..e2857f24b70e56fbfca1e7ed987deb19f1346783 100644
--- a/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod
+++ b/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod
@@ -85,6 +85,11 @@ constant DAV_STORAGE_FULL	= 507; // RFC 2518 10.6: Insufficient Storage
 
     proxy_headers["Proxy-Authorization"] = "Basic "
       + MIME.encode_base64((user || "") + ":" + (password || ""));
+    if (has_value(proxy->host, ":")) {
+      proxy_headers["host"] = "[" + proxy->host + "]:" + proxy->port;
+    } else {
+      proxy_headers["host"] = proxy->host + ":" + proxy->port;
+    }
   }
 
   if (url->scheme == "http") {
@@ -463,6 +468,11 @@ void do_async_proxied_method(string|Standards.URI proxy,
 
     proxy_headers["Proxy-Authorization"] = "Basic "
       + MIME.encode_base64((user || "") + ":" + (password || ""));
+    if (has_value(proxy->host, ":")) {
+      proxy_headers["host"] = "[" + proxy->host + "]:" + proxy->port;
+    } else {
+      proxy_headers["host"] = proxy->host + ":" + proxy->port;
+    }
   }
 
   if (url->scheme == "http") {