HTTP/2 server H2O hits version 2.0.0
This lightweight and optimised HTTP/2 server has now been powering this site since June 2015. During this year the server has proved very reliable and running H2O as your main web server or as your HTTP/2 capable SSL offloader for Varnish is easy. Configuration format also remained the same between 1.7.x and 2.0.x versions, so upgrading was straightforward.
HTTP/2 is a new version of the protocol powering the World Wide Web. It was formally finalized in 2015 and since that both Apache and Nginx have received HTTP/2 support in their stable versions.
In the the past week the HTTP/2 capable version of Nginx came available for developers using Debian versions Jessie and Wheezy through Dotdeb: Nginx 1.10.1 for Jessie and Wheezy
H2O version 2.0.0 continues on the path for being the most feature complete HTTP/2 server around, with full support for features such as prioritized content serving and server push.
With minimal CPU utilization it promises faster time to first byte compared with previous generation web servers like Nginx and Apache.
For some peformance statistics from the development team itself, take a look at the H2O HTTP/2 server sites benchmarks.
H2O 2.0.0 server change log
A complete list of changes is available the change log on the H2O v2.0.0 tag on GitHub.
This is a major update release, with following changes (including new features and bug fixes) from 1.7.3.
- [core][breaking change] do not automatically append
/
to path-level configuration #820 (Kazuho Oku) - [core] support
<<
in configuration file #786 (Kazuho Oku) - [core] configurable server: header #877 (Frederik Deweerdt)
- [core] add directive for customizing the path of temporary buffer files #911 (Kazuho Oku)
- [core] fix crash when receiving SIGTERM during start-up #878 (Frederik Deweerdt)
- [core] spawn the configured number of DNS client threads #880 (Sean McArthur)
- [access-log] add directive for logging protocol-specific values #801 (Kazuho Oku)
- [access-log][fastcgi][mruby] per-request environment variables #868 (Kazuho Oku)
- [access-log] fix memory leak during start-up #864 (Frederik Deweerdt)
- [compress] on-the-fly compression using brotli, as well as directives to tune the compression parameters #802, #924 (Kazuho Oku, Frederik Deweerdt)
- [compress][expires] refrain from setting redundant
cache-control
tokens #846 (Kazuho Oku) - [file]
file.file
directive for mapping specific file #822 (Kazuho Oku) - [file]
send-compress
directive (renamed fromsend-gzip
) to support pre-compressed files using brotli #802 (Kazuho Oku) - [file] cache open failures #836 (Kazuho Oku)
- [http2] support for nopush attribute in the link rel=preload header #863 (Satoh Hiroh)
- [http2] support for push after delegation #866 (Kazuho Oku)
- [http2] ignore push indications made by a pushed response #897 (Kazuho Oku)
- [http2] accept
capacity-bits
attribute of thehttp2-casper
configuration directive #882 (Satoh Hiroh) - [http2] avoid memcpy during HPACK huffman encoding #749 (Kazuho Oku)
- [http2] fix potential stall when http2-max-concurrent-requests-per-connection is set to a small number #912 (Kazuho Oku)
- [http2] refuse push a single resource more than once #903 (Kazuho Oku)
- [http2] fix assertion failure when receiving more data than expected during upgrade #922 (Frederik Deweerdt)
- [mruby] add $H2O_ROOT/share/h2o/mruby to the default load path #851 (Kazuho Oku)
- [proxy] add support for HTTPS #875 (Kazuho Oku)
- [proxy] add an configuration option to pass through
x-forwarded-proto
request header #883(Kazuho Oku) - [proxy] log error when upstream connection is unexpectedly closed #895 (Frederik Deweerdt)
- [ssl] update libressl to 2.2.7 #898 (Kazuho Oku)
- [ssl] support ECDH curves other than P-256 #841 (Kazuho Oku)
- [ssl] add support for text-based memcache protocol #854 (Kazuho Oku)
- [ssl] fix memory leak when using TLS resumption with the memcached backend #856 (Kazuho Oku)
- [ssl] fix "undefined subroutine" error in the OCSP updater #872 (Masayuki Matsuki)
- [ssl] cap the number of OCSP updaters running concurrently #891 (Kazuho Oku)
- [ssl] fix use-after-free when using session resumption with memcached backend #923 (Frederik Deweerdt)
- [libh2o] add API for obtaining the socket descriptor #886 (Frederik Deweerdt)
- [libh2o] add API to selectively disable automated I/O on reads and writes #890 (Frederik Deweerdt)
- [libh2o] bugfix: h2o_mem_swap swaps only the first 256 bytes #924 (Frederik Deweerdt)
- [status] introduce the status handler #848 (Kazuho Oku)
- [misc] install examples #850 (James Rouzier)