HTTP/2

If your server provides the mod_http2 module, ApacheExpress will automatically pick it up, configure a development SSL certificate and the HTTP/2 module.

UPDATE 2020-12-27: The Homebrew Apache doesn't seem to support the --with-http2 option anymore. HTTP/2 may now require a regular Apache installation from source.

Check whether HTTP/2 is available

To check whether mod_swift did detect the HTTP/2 module successfully, you can run:

$ swift apache validate
swift-driver version: 1.45.2 The Swift Apache build environment looks sound.

  srcroot:   /Users/helge/tmp/mods_helloworld
  module:    mods_helloworld
  config:    debug
  product:   /Users/helge/tmp/mods_helloworld/.build/mods_helloworld.so
  apxs:      /opt/homebrew/bin/apxs
  moddir:    /opt/homebrew/lib/httpd/modules
  relmoddir: /
  mod_swift: /opt/homebrew/opt/mod_swift
  swift:     5.6.0
  cert:      self-signed-mod_swift-localhost-server.crt
  http/2:    yes

Look for the last line and check whether it says yes.

Useful tools

Chrome Developer Tools

You can use the Network tab in the Chrome Developer Tools to check whether requests are done using HTTP/2. Right click the table view and select 'Protocol'.

curl w/ HTTP/2 support

The system curl now comes with HTTP/2 support by default on macOS 12.

curl -v --insecure --http2 https://localhost:8442/hello

(--insecure is needed if you use it w/ the self-signed certificate coming w/ mod_swift)

You can scan the output of curl to see whether it is actually using HTTP/2:

...
* ALPN, offering h2
* ALPN, offering http/1.1
...
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
...
> GET /hello HTTP/2
...
< HTTP/2 200
...