HTTP/2 for Apache httpd
Copyright (C) 2016 greenbytes GmbH
Some days before Easter, I reported on the new things in the upcoming 2.4.19 release of Apache httpd. Well, I broke the Windows build in that release and it was scrapped. That is the Apache httpd release process: if you break it, you own both parts!
So, Jim who is the hero doing almost all release management decided to wait until after Easter to tag the next release candidate. Which is supposed to happen today! Hopefully, this time everything works and we can ship a 2.4.20 by the end of the week after the usual testing and voting.
In the meantime, I have not been idle and sneaked in some fixes and a little new stuff that might interest you:
mod_http2
needs to know the frame size of DATA frames before it acutally sends it. Up until now, it first asked the lock
protected code that is responsible for data shuffling back and forth how much is available. On transfer it entered
the lock again to get the data. With 2.4.20, this is done in one go. Slight performance increase in certain situation.server-status
) updates from happening.I admit that logging has not been high on my priority list. Probably because I myself do not run statistics on the few servers that I maintain. But a lot of you do and rightly so! So without further ado, here is what possiblities you will have in 2.4.20:
%k
,
will work also in HTTP/2 connections. For h1, it counts how many requests have already been
processed on a connection. In h2, where requests run concurrently, it counts how many requests
have already been started. And with started I do not mean received. Because
received requests (or streams as h2 calls them) are queued. And when a h2 worker becomes
available it selects the oldest one with the highest priority to work on.HTTP2
, value on|off
, flags if
HTTP/2 is used on a connection/for a request. You use it as %{HTTP2}e
in your
custom log formats.H2_PUSH
(also available as deprecated H2PUSH
) is
also a flag (on|off
) which is on
only when the PUSH feature of
HTTP/2 is available (server and client enable it).H2_PUSHED
is either empty or has the value PUSHED
for requests that have been pushed by the server.H2_PUSHED_ON
contains the stream identifier (a 32-bit int) of the request
that triggered the push.H2_STREAM_ID
is the stream identifier of the request.H2_STREAM_TAG
is a process wide unique string for a HTTP/2 request, consisting
of connection and stream identifier. This is also used when debug logging mod_http2
.httpd
you can make use of them in your CGI/PHP/Python
or whatever web application.
Hope you enjoy it.
Münster, 04.04.2016,
Stefan Eissing, greenbytes GmbH
Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. See LICENSE for details.