diff --git a/content/h2push/server/cert.pem b/content/h2push/server/cert.pem
new file mode 100644
index 0000000..a5e358b
--- /dev/null
+++ b/content/h2push/server/cert.pem
@@ -0,0 +1,18 @@
+-----BEGIN CERTIFICATE-----
+MIIC+jCCAeKgAwIBAgIRAObvuqxwZslFrWR3prSG3dIwDQYJKoZIhvcNAQELBQAw
+EjEQMA4GA1UEChMHQWNtZSBDbzAeFw0xNzAzMjEyMTIyMTlaFw0xODAzMjEyMTIy
+MTlaMBIxEDAOBgNVBAoTB0FjbWUgQ28wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
+ggEKAoIBAQCo/c12ijJ5W3P+6A7P0kY5uzgx0Dxf33PZ7CIUijtH/8AoQoaC7cfn
+I/ZaFgxJdZsGoC2+nlkBBOL0kPPc5FB6B93KEqhl2GLlKsojy4aB6osEBxnrHvX7
+2M8ainZB1SVtkt7CmstWRyD8b0dwEKR84ihN13ia7pgAute64ZcgsrfMptr1OiMh
+8wJQQQcwSU1V+m9a4M+yWFGiGG6bSRoKUk/LPn5ET/q5DJlpeh+GxG70rIXvUr8O
+9yGT5y10dR77wMrdhpmCWpA5+RUQbwA549lI7r+lEipoO0zASOt9X4OKfUTCH/Ss
+wSOpiFEuLFHn+ISXZXB1l0GUnkhLOBE3AgMBAAGjSzBJMA4GA1UdDwEB/wQEAwIF
+oDATBgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMBAf8EAjAAMBQGA1UdEQQNMAuC
+CWxvY2FsaG9zdDANBgkqhkiG9w0BAQsFAAOCAQEAejwoqgZ7C0aIfn/iI6re/Kkl
+VJWROa/ztbEVEK6Pq9OGfWWNx57a/Ya2xX2C/l+WWo7vBvq7yLhMZ2tR+QeRNvHA
+dlyfdv7lg5oQ1a+ecl5mIoeYS5cxBTohWzf8QLfp5J/AKOOZn+HQlI3b1gkbiWIP
+LSo+e4jvRyDDj/caIZqc6a3SNKmdZxCGNps/VpQR+3gRPDPo6s7Ieoz230UcvJMc
+N4BdI3VYZiBAWxi657WeUZrmRhKIc6h4vO4H1pSMD+uGfU9/2nm+udXpNNCpV72q
+pCjSOWRzvgOmvWTyRjRyDvViG7jNQdzBPbnRaK1XRKN3Yij16+k8v8UD0xsrdg==
+-----END CERTIFICATE-----
diff --git a/content/h2push/server/key.pem b/content/h2push/server/key.pem
new file mode 100644
index 0000000..388407f
--- /dev/null
+++ b/content/h2push/server/key.pem
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEogIBAAKCAQEAqP3NdooyeVtz/ugOz9JGObs4MdA8X99z2ewiFIo7R//AKEKG
+gu3H5yP2WhYMSXWbBqAtvp5ZAQTi9JDz3ORQegfdyhKoZdhi5SrKI8uGgeqLBAcZ
+6x71+9jPGop2QdUlbZLewprLVkcg/G9HcBCkfOIoTdd4mu6YALrXuuGXILK3zKba
+9TojIfMCUEEHMElNVfpvWuDPslhRohhum0kaClJPyz5+RE/6uQyZaXofhsRu9KyF
+71K/Dvchk+ctdHUe+8DK3YaZglqQOfkVEG8AOePZSO6/pRIqaDtMwEjrfV+Din1E
+wh/0rMEjqYhRLixR5/iEl2VwdZdBlJ5ISzgRNwIDAQABAoIBAC3/v+CnZ2vPL/jP
+09BP7VujkX1FsFlsao2EEBbFNbO4cubCjPiwnrxU9qa436lTQNqB2VHMqm9zlA98
+MVUMNLey0nVBtOLcDrdQeWta6AcO/74d7LkqWUyvTFhuHhh3W1PDKa2REw4uGFV+
+ONTRQuTXbp8ZqrOJhIiWU0iERW3ZppXxtSke+fpVgz2Jtrmin9Yx6ptofaRUyESY
+LycpH8Ex5T01Wmnvas44iklBT8zLeSyL+EgwWjgBlmVTON10rDlZCivSgnTBo7o0
+isuiLiHQPgol/XGvnMHlOM9L8+lqqswKBz0vpuyQ6qUApPe5K8TZ4wmywHGv3utq
+GC1m+bECgYEA1bAox9w/+r8J9DxRqvjg6SG5nvaTMP4Ogb2aUOxFUebLlVuTsLyF
+w/YNIvtgExradv/I35qJA8YnvYGE77jQoajPJ1wNcx9mrEujPEIVeKyn0V/o98dV
+6S7Z9NT4T2ElyhZWA/Uef89TomPWnZoleoewwexcfrg1C6a+8B1jMM8CgYEAynP4
+KvcM6ZzLJ4ynGe0Uw4mg2dgcaTyOK23zSsSqc12FoaMMUgof0Z+/d1KgTCL3TPvG
+hUA261bgYFAuzlHXo71+QKkzQjVftrNACLStSGjDqQwb/Kb5BeuWB1VPyfDSLpKx
+obxjp+vS3C8wM8fx9EN0ds1zXbxnPS+9zHRkIxkCgYAOUt2Y8AmV3EJljbmHtWEW
+H32ayzp4mT8NsVDrxbqrz8WrwFS5DxoEVbTxuFnrTeyA94pWerxedWTqjgkELKZH
+f9JK+B+qrNssB3Hssx1PVnt1THGIUmNO2yYfBDuUzpVC45Zmc4LU3Gflxb14GQIU
+IY5WoWpd0Ck2G7pGzCF+/wKBgFDSOSlV1QbR/Fw+j1sPRXHGWLt+xeDRNuRpkW2w
+02cY18cuYzXBKvCxeGs3Rhz+/ID0Jk191C7hUNPCTt042QBaHrPLmFX/HsW+C3su
+PdshT7MFzYpwUgumAA/PY/n3NME4+MbbgWFBCL2z7OdPE+1ynGTtIfgyxXgsvfWI
+JY3JAoGAKh11P1A1PRH6TNtWn78JkoVRCPE0mRjd01tJW5BTolK5a0yCVIOQcSBm
+w59msWhfkO+HB/v97x4/AFrm84saHtVYOksv7qZBgqDT43a3b9IjBl5deMCxB9He
+1W3cLtpmouXlvs6p8wTaIZI7Wr9H9Xk2WrpJQQOZ1loZbOfo6Pg=
+-----END RSA PRIVATE KEY-----
diff --git a/content/h2push/server/main.go b/content/h2push/server/main.go
new file mode 100644
index 0000000..5cc153a
--- /dev/null
+++ b/content/h2push/server/main.go
@@ -0,0 +1,47 @@
+// server is a server with HTTP/2 Server Push support.
+package main
+
+import (
+	"flag"
+	"fmt"
+	"log"
+	"net/http"
+)
+
+var httpAddr = flag.String("http", ":8080", "Listen address")
+
+func main() {
+	flag.Parse()
+	http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))
+	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
+		if r.URL.Path != "/" {
+			http.NotFound(w, r)
+			return
+		}
+		pusher, ok := w.(http.Pusher)
+		if ok {
+			// Push is supported. Try pushing rather than
+			// waiting for the browser request these static assets.
+			if err := pusher.Push("/static/app.js", nil); err != nil {
+				log.Printf("Failed to push: %v", err)
+			}
+			if err := pusher.Push("/static/style.css", nil); err != nil {
+				log.Printf("Failed to push: %v", err)
+			}
+		}
+		fmt.Fprintf(w, indexHTML)
+	})
+	log.Fatal(http.ListenAndServeTLS(*httpAddr, "cert.pem", "key.pem", nil))
+}
+
+const indexHTML = `<html>
+<head>
+	<title>Hello World</title>
+	<script src="/static/app.js"></script>
+	<link rel="stylesheet" href="/static/style.css"">
+</head>
+<body>
+Hello, gopher!
+</body>
+</html>
+`
diff --git a/content/h2push/server/static/app.js b/content/h2push/server/static/app.js
new file mode 100644
index 0000000..b6211f2
--- /dev/null
+++ b/content/h2push/server/static/app.js
@@ -0,0 +1 @@
+console.log("Hello!");
diff --git a/content/h2push/server/static/style.css b/content/h2push/server/static/style.css
new file mode 100644
index 0000000..b55e615
--- /dev/null
+++ b/content/h2push/server/static/style.css
@@ -0,0 +1,7 @@
+body {
+	margin: 20px;
+	font-family: Arial, sans-serif;
+	font-size: 16px;
+	background-color: #fff;
+	line-height: 1.3em;
+}
