Return-Path: X-Original-To: apmail-httpd-cvs-archive@www.apache.org Delivered-To: apmail-httpd-cvs-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 0278B19B79 for ; Tue, 12 Apr 2016 06:09:55 +0000 (UTC) Received: (qmail 13124 invoked by uid 500); 12 Apr 2016 06:09:54 -0000 Delivered-To: apmail-httpd-cvs-archive@httpd.apache.org Received: (qmail 13060 invoked by uid 500); 12 Apr 2016 06:09:54 -0000 Mailing-List: contact cvs-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@httpd.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list cvs@httpd.apache.org Received: (qmail 13049 invoked by uid 99); 12 Apr 2016 06:09:54 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 12 Apr 2016 06:09:54 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id 6C5E5C6849 for ; Tue, 12 Apr 2016 06:09:54 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 0.004 X-Spam-Level: X-Spam-Status: No, score=0.004 tagged_above=-999 required=6.31 tests=[KAM_LAZY_DOMAIN_SECURITY=1, RP_MATCHES_RCVD=-0.996] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id SyhI-cYQru3v for ; Tue, 12 Apr 2016 06:09:53 +0000 (UTC) Received: from mailrelay1-us-west.apache.org (mailrelay1-us-west.apache.org [209.188.14.139]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTP id E7F545F1F7 for ; Tue, 12 Apr 2016 06:09:52 +0000 (UTC) Received: from svn01-us-west.apache.org (svn.apache.org [10.41.0.6]) by mailrelay1-us-west.apache.org (ASF Mail Server at mailrelay1-us-west.apache.org) with ESMTP id 28EA3E0054 for ; Tue, 12 Apr 2016 06:09:52 +0000 (UTC) Received: from svn01-us-west.apache.org (localhost [127.0.0.1]) by svn01-us-west.apache.org (ASF Mail Server at svn01-us-west.apache.org) with ESMTP id 29A073A0216 for ; Tue, 12 Apr 2016 06:09:52 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1738691 - /httpd/httpd/trunk/docs/manual/mod/mod_http2.html.en Date: Tue, 12 Apr 2016 06:09:52 -0000 To: cvs@httpd.apache.org From: jailletc36@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20160412060952.29A073A0216@svn01-us-west.apache.org> Author: jailletc36 Date: Tue Apr 12 06:09:51 2016 New Revision: 1738691 URL: http://svn.apache.org/viewvc?rev=1738691&view=rev Log: xforms Modified: httpd/httpd/trunk/docs/manual/mod/mod_http2.html.en Modified: httpd/httpd/trunk/docs/manual/mod/mod_http2.html.en URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/docs/manual/mod/mod_http2.html.en?rev=1738691&r1=1738690&r2=1738691&view=diff ============================================================================== --- httpd/httpd/trunk/docs/manual/mod/mod_http2.html.en (original) +++ httpd/httpd/trunk/docs/manual/mod/mod_http2.html.en Tue Apr 12 06:09:51 2016 @@ -39,7 +39,7 @@ support for the Apache HTTP Server.

This module relies on libnghttp2 - to provide the core http/2 engine.

+ to provide the core http/2 engine.

Warning

This module is experimental. Its behaviors, directives, and @@ -48,24 +48,33 @@ consult the "CHANGES" file for potential updates.

-

You must enable HTTP/2 via Protocols in order to use the - functionality described in this document. The HTTP/2 protocol does not require the use of encryption so two schemes are available: h2 (HTTP/2 over TLS) and h2c (HTTP/2 over TCP).

+

You must enable HTTP/2 via Protocols + in order to use the functionality described in this document. The + HTTP/2 protocol does not require the use of encryption so two schemes are available: + h2 (HTTP/2 over TLS) and h2c (HTTP/2 over TCP).

Two useful configuration schemes are:

HTTP/2 in a VirtualHost context (TLS only)

Protocols h2 http/1.1
-

Allows HTTP/2 negotiation (h2) via TLS ALPN in a secure VirtualHost. HTTP/2 preamble checking (Direct mode, see H2Direct) is disabled by default for h2.

+

Allows HTTP/2 negotiation (h2) via TLS ALPN in a secure + <VirtualHost>. + HTTP/2 preamble checking (Direct mode, see H2Direct) is disabled by default for h2.

HTTP/2 in a Server context (TLS and cleartext)

Protocols h2 h2c http/1.1
-

Allows HTTP/2 negotiation (h2) via TLS ALPN for secure VirtualHost. Allows HTTP/2 cleartext negotiation (h2c) upgrading from an initial HTTP/1.1 connection or via HTTP/2 preamble checking (Direct mode, see H2Direct).

+

Allows HTTP/2 negotiation (h2) via TLS ALPN for secure + <VirtualHost>. Allows + HTTP/2 cleartext negotiation (h2c) upgrading from an initial HTTP/1.1 + connection or via HTTP/2 preamble checking (Direct mode, see + H2Direct).

-

Refer to the official HTTP/2 FAQ for any doubt about the protocol.

+

Refer to the official HTTP/2 FAQ + for any doubt about the protocol.

Topics

@@ -113,11 +122,12 @@ pool from the MPM workers that you might be familiar with. This is just how things are right now and not intended to be like this forever. (It might be forever for the 2.4.x release line, though.) So, HTTP/2 - workers, or shorter H2Workers, will not show up in mod_status. They + workers, or shorter H2Workers, will not show up in mod_status. They are also not counted against directives such as ThreadsPerChild. However - they take ThreadsPerChild as default if you have not configured something - else via H2MinWorkers and - H2MaxWorkers. + they take ThreadsPerChild + as default if you have not configured something + else via H2MinWorkers and + H2MaxWorkers.

Another thing to watch out for is is memory consumption. Since HTTP/2 @@ -125,12 +135,12 @@ for and dependencies between them, it will always need more memory than HTTP/1.1 processing. There are three directives which steer the memory footprint of a HTTP/2 connection: - H2MaxSessionStreams, - H2WindowSize and - H2StreamMaxMemSize. + H2MaxSessionStreams, + H2WindowSize and + H2StreamMaxMemSize.

- H2MaxSessionStreams limits the + H2MaxSessionStreams limits the number of parallel requests that a client can make on a HTTP/2 connection. It depends on your site how many you should allow. The default is 100 which is plenty and unless you run into memory problems, I would keep it this @@ -138,14 +148,14 @@ use up only a little bit of memory until the actual processing starts.

- H2WindowSize controls how much + H2WindowSize controls how much the client is allowed to send as body of a request, before it waits for the server to encourage more. Or, the other way around, it is the amount of request body data the server needs to be able to buffer. This is per request.

- And last, but not least, H2StreamMaxMemSize + And last, but not least, H2StreamMaxMemSize controls how much response data shall be buffered. The request sits in a H2Worker thread and is producing data, the HTTP/2 connection tries to send this to the client. If the client does not read fast enough, @@ -153,7 +163,7 @@ H2Worker.

- If you serve a lot of static files, H2SessionExtraFiles + If you serve a lot of static files, H2SessionExtraFiles is of interest. This tells the server how many file handles per HTTP/2 connection it is allowed to waste for better performance. Because when a request produces a static file as the response, the file handle @@ -240,8 +250,9 @@

When a server/vhost does not have h2 or h2c enabled via - <Protocols>, - the connection is never inspected for a HTTP/2 preamble. H2Direct + Protocols, + the connection is never inspected for a HTTP/2 preamble. + H2Direct does not matter then. This is important for connections that use protocols where an initial read might hang indefinitely, such as NNTP. @@ -292,7 +303,7 @@

This directive sets the maximum number of seconds a h2 worker may idle until it shuts itself down. This only happens while the number of - h2 workers exceeds H2MinWorkers. + h2 workers exceeds H2MinWorkers.

Example

H2MaxWorkerIdleSeconds 20
@@ -310,7 +321,7 @@

This directive sets the maximum number of worker threads to spawn per child process for HTTP/2 processing. If this directive is not used, - mod_http2 will chose a value suitable for the mpm + mod_http2 will chose a value suitable for the mpm module loaded.

Example

H2MaxWorkers 20
@@ -329,7 +340,7 @@

This directive sets the minimum number of worker threads to spawn per child process for HTTP/2 processing. If this directive is not used, - mod_http2 will chose a value suitable for the mpm + mod_http2 will chose a value suitable for the mpm module loaded.

Example

H2MinWorkers 10
@@ -366,14 +377,14 @@ in OpSec, this is a moving target and can be expected to evolve in the future.

- One purpose of having these checks in mod_http2 is to enforce this + One purpose of having these checks in mod_http2 is to enforce this security level for all connections, not only those from browsers. The other purpose is to prevent the negotiation of HTTP/2 as a protocol should the requirements not be met.

Ultimately, the security of the TLS connection is determined by the - server configuration directives for mod_ssl. + server configuration directives for mod_ssl.

Example

H2ModernTLSOnly off
@@ -445,7 +456,7 @@

H2PushDiarySize Directive

- + @@ -501,7 +512,7 @@

When a stream depends on another, say X depends on Y, then Y gets all bandwidth before X gets any. Note that this - does not men that Y will block X. If Y has no data to send, + does not mean that Y will block X. If Y has no data to send, all bandwidth allocated to Y can be used by X.

@@ -692,8 +703,8 @@ H2PushPriority text/css interleaved <VirtualHost>s.

- See <H2TLSWarmUpSize> for a - description of TLS warmup. H2TLSCoolDownSecs reflects the fact + See H2TLSWarmUpSize for a + description of TLS warmup. H2TLSCoolDownSecs reflects the fact that connections may deteriorate over time (and TCP flow adjusts) for idle connections as well. It is beneficial to overall performance to fall back to the pre-warmup phase after a number of seconds that @@ -716,7 +727,7 @@ H2PushPriority text/css interleaved

Description:H2 Server Push Diary Size
Syntax:H2PushDiarySize n
Syntax:H2PushDiarySize n
Default:H2PushDiarySize 256
Context:server config, virtual host
Status:Extension
- + @@ -793,12 +804,12 @@ H2PushPriority text/css interleaved Please be aware that Upgrades are only accepted for requests that carry no body. POSTs and PUTs with content will never trigger an upgrade to HTTP/2. - See <H2Direct> for an + See H2Direct for an alternative to Upgrade.

This mode only has an effect when h2 or h2c is enabled via - the <Protocols>. + the Protocols.

Example

H2Upgrade on
Description:
Syntax:H2TLSWarmUpSize amount
Syntax:H2TLSWarmUpSize amount
Default:H2TLSWarmUpSize 1048576
Context:server config, virtual host
Status:Extension