From: Christophe Jaillet
The HTTP/2 protocol is implemented by its own httpd module, aptly named
- mod_http2. It implements the complete set
+ mod_http2 uses the library of nghttp2
- as its implementation base. In order to build When you While that should do the trick for most, they are people who might prefer a statically
linked h2c
',
the secure one 'h2
'. For h2c
it allows the direct
@@ -74,8 +74,8 @@
mod_http2
you need at least version 1.2.1 of
+ libnghttp2
installed on your system../configure
you Apache httpd source tree, you need to give it
'--enable-http2
' as additional argument to trigger the build of the module.
@@ -84,7 +84,7 @@
to configure
.nghttp2
in this module. For those, the option --enable-nghttp2-staticlib-deps
- exists. It works quite similar to how one statically links openssl to mod_ssl.
Speaking of SSL, you need to be aware that most browsers will speak HTTP/2 only on When you have a When you have a This allows only HTTP/1 on connections, except SSL connections to The The The order of protocols mentioned is also relevant. By default, the first one is the
most preferred protocol. When a client offers multiple choices, the one most to the
@@ -148,7 +154,8 @@ ProtocolsHonorOrder Off
ordering will decide. A last thing: the protocols you configure are not checked for correctness
or spelling. You can mention protocols that do not exist, so there is no need
- to guard https:
URLs, so you need a server with SSL support. But not only that, you will need a SSL library
that supports the ALPN
extension. If OpenSSL is the library you use, you need
@@ -94,7 +94,7 @@
httpd
built with mod_http2
you need some
+ httpd
built with test.example.org
which offer HTTP/2.h2
enabled server with a inappropriate cipher suite will force it to simply refuse and fall back to HTTP 1.1. This is a common mistake that is done while configuring httpd for HTTP/2 the first time, so please keep it in mind to avoid long debugging sessions! If you want to be sure about the cipher suite to choose please avoid the ones listed in the HTTP/2 TLS blacklist.h2
enabled server with a inappropriate
+ cipher suite will force it to simply refuse and fall back to HTTP 1.1. This is a common mistake
+ that is done while configuring httpd for HTTP/2 the first time, so please keep it in mind to avoid
+ long debugging sessions! If you want to be sure about the cipher suite to choose please avoid
+ the ones listed in the HTTP/2 TLS blacklist.Protocols
with any IfModule
checks.
For more advanced tips on configuration, see the modules section about dimensioning and how to manage multiple hosts with the same certificate.
@@ -206,7 +213,10 @@ ProtocolsHonorOrder OffChrome offers detailed HTTP/2 logs on its connections via the - special net-internals page. There is also an interesting extension for Chrome and Firefox to visualize when your browser is using HTTP/2.
+ special net-internals page. There is also an + interesting extension for Chrome + and Firefox + to visualize when your browser is using HTTP/2.To summarize: there is no one good strategy on how to make best use of this feature of HTTP/2 and everyone is still experimenting. So, how do you experiment with it in Apache httpd?
-mod_http2
inspect response header for Link
headers
+
Link
headers
in a certain format:
There are people thinking about how a client can tell a server what it already has, so PUSHes for those things can be avoided, but this is all highly experimental right now.
-Another experimental draft that has been implemented in mod_http2
+
Another experimental draft that has been implemented in
(It is not enabled by default since some older browser tripped on such responses.)
-If this feature is on, you can the directive H2PushResource
to
+
If this feature is on, you can the directive
If H2Push
is enabled, this will also start the PUSH right after the
- 103 response. If H2Push
is disabled however, the 103 response will be send
+
If