diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,11 +1,13 @@
+
 ## 0.6.0.2
 
-* Add `wpsLogRequest` function which provides the ability to log the
-  constructed `Request`.
+* Fix docker registry reverse proxying by preserving the 'Content-Length' response header to HTTP/2 and HEAD requests. [#45](https://github.com/fpco/http-reverse-proxy/pull/45)
 
 ## 0.6.0.1
 
 * Introduce a "semi cached body" to let the beginning of a request body be retried [#34](https://github.com/fpco/http-reverse-proxy/issues/34)
+* Add `wpsLogRequest` function which provides the ability to log the
+  constructed `Request`.
 
 ## 0.6.0
 
diff --git a/Network/HTTP/ReverseProxy.hs b/Network/HTTP/ReverseProxy.hs
--- a/Network/HTTP/ReverseProxy.hs
+++ b/Network/HTTP/ReverseProxy.hs
@@ -271,7 +271,7 @@
     --
     -- Default: no op
     --
-    -- @since 0.6.0.2
+    -- @since 0.6.0.1
     }
 
 -- | How to set the X-Real-IP request header.
@@ -426,9 +426,12 @@
                                         (awaitForever (\bs -> yield (Chunk $ fromByteString bs) >> yield Flush))
                                         (wpsProcessBody wps req $ const () <$> res)
                             src = bodyReaderSource $ HC.responseBody res
+                            noChunked = HT.httpMajor (WAI.httpVersion req) >= 2 || WAI.requestMethod req == HT.methodHead
                         sendResponse $ WAI.responseStream
                             (HC.responseStatus res)
-                            (filter (\(key, _) -> not $ key `Set.member` strippedHeaders) $ HC.responseHeaders res)
+                            (filter (\(key, v) -> not (key `Set.member` strippedHeaders) ||
+                                                  key == "content-length" && (noChunked || v == "0"))
+                                    (HC.responseHeaders res))
                             (\sendChunk flush -> runConduit $ src .| conduit .| CL.mapM_ (\mb ->
                                 case mb of
                                     Flush -> flush
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -21,3 +21,38 @@
         (\_headers -> return $ Right $ ProxyDest "www.example.com" 80)
         appData
 ```
+
+## HTTPS example to proxy bing.com
+
+The following example sets up reverse proxying froming to www.bing.com
+from localhost port 3000:
+
+``` haskell
+import Network.HTTP.Client.TLS
+import Network.HTTP.ReverseProxy
+import Network.Wai
+import Network.Wai.Handler.Warp (run)
+
+main :: IO ()
+main = bingExample >>= run 3000
+
+bingExample :: IO Application
+bingExample = do
+  manager <- newTlsManager
+  pure $
+    waiProxyToSettings
+      ( \request ->
+          return $
+            WPRModifiedRequestSecure
+              ( request
+                  { requestHeaders = [("Host", "www.bing.com")]
+                  }
+              )
+              (ProxyDest "www.bing.com" 443)
+      )
+      defaultWaiProxySettings {wpsLogRequest = print}
+      manager
+```
+
+After running it, you can visit [http://localhost:3000](http://localhost:3000) to visit
+the search engine's page.
diff --git a/http-reverse-proxy.cabal b/http-reverse-proxy.cabal
--- a/http-reverse-proxy.cabal
+++ b/http-reverse-proxy.cabal
@@ -1,5 +1,5 @@
 name:                http-reverse-proxy
-version:             0.6.0.1
+version:             0.6.0.2
 synopsis:            Reverse proxy HTTP requests, either over raw sockets or with WAI
 description:         Provides a simple means of reverse-proxying HTTP requests. The raw approach uses the same technique as leveraged by keter, whereas the WAI approach performs full request/response parsing via WAI and http-conduit.
 homepage:            https://github.com/fpco/http-reverse-proxy
