Update to r54630:

Add a section on HTTP2 with Apache.

Reviewed by:	bcr
Differential Revision:	https://reviews.freebsd.org/D27320
This commit is contained in:
Bjoern Heidotting 2020-11-23 18:43:24 +00:00
parent e6d2f8c895
commit c825f24fdf
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=54706

View file

@ -5,7 +5,7 @@
$FreeBSD$
$FreeBSDde: de-docproj/books/handbook/network-servers/chapter.xml,v 1.103 2011/12/24 15:51:18 bcr Exp $
basiert auf: r54573
basiert auf: r54630
-->
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
@ -3945,6 +3945,126 @@ LoadModule ssl_module libexec/apache24/mod_ssl.so</programlisting>
sind Ansatzpunkte, die Administratoren bei der
Implementierung unterstützen sollen.</para>
</sect3>
<sect3>
<info>
<title>HTTP2-Unterstützung</title>
</info>
<para>Die <application>Apache</application>-Unterstützung für
das <acronym>HTTP</acronym>2-Protokoll ist bei der
Installation des Ports mit <command>pkg</command>
automatisch enthalten. Die neue Version von
<acronym>HTTP</acronym> enthält viele Verbesserungen
gegenüber der vorherigen Version, einschließlich der
Verwendung einer einzigen Verbindung zu einer Website,
wodurch die Anzahl der Roundtrips von TCP-Verbindungen
reduziert wird. Zudem werden die Header-Daten der Pakete
komprimiert und <acronym>HTTP</acronym>2 erfordert
standardmäßig Verschlüsselung.</para>
<para>Wenn <application>Apache</application> so konfiguriert
ist, dass nur <acronym>HTTP</acronym>2 benutzt wird, müssen
Browser sichere, verschlüsselte
<acronym>HTTPS</acronym>-Verbindungen unterstützen. Ist
<acronym>Apache</acronym> so konfiguriert, dass beide
Versionen benutzt werden, steht <acronym>HTTP</acronym>1.1
als Fallback-Option bereit, falls während der Verbindung
Probleme auftreten.</para>
<para>Obwohl der Administrator einige Änderungen an der
Konfiguration vornehmen muss, wirkt sich dies positiv auf
die Sicherheit aller im Internet aus. Die Änderungen sind
auch nur für Server erforderlich, die derzeit
<acronym>SSL</acronym> und <acronym>TLS</acronym> nicht
implementieren.</para>
<note>
<para>Diese Konfiguration baut auf den vorherigen
Abschnitten auf, einschließlich der Unterstützung für
<acronym>TLS</acronym>. Es wird empfohlen, diese
Anweisungen zu befolgen, bevor Sie mit dieser
Konfiguration fortfahren.</para>
</note>
<para>Starten Sie damit, dass <acronym>http</acronym>2-Modul
zu aktivieren, indem Sie diese Zeilen in
<filename>/usr/local/etc/apache24/httpd.conf</filename>
auskommentieren und das Modul mpm_prefork durch mpm_event
ersetzen, da ersteres <acronym>HTTP</acronym>2 nicht
unterstützt.</para>
<programlisting>LoadModule http2_module libexec/apache24/mod_http2.so
LoadModule mpm_event_module libexec/apache24/mod_mpm_event.so</programlisting>
<note>
<para>Es ist ebenfalls ein separater Port
<filename role="port">mod_http2</filename> verfügbar.
Dieser Port ist dazu gedacht, Sicherheit und
Fehlerbehebungen schneller zur Verfügung zu stellen als
das installierte Modul vom
<filename role="port">apache24</filename>-Port. Dann
muss <filename>mod_h2.so</filename> anstelle von
<filename>mod_http2.so</filename> in der Konfiguration von
<application>Apache</application> benutzt werden.</para>
</note>
<para>Es gibt zwei Möglichkeiten, <acronym>HTTP</acronym>2 in
<application>Apache</application> zu implementieren. Eine
Möglichkeit ist global für alle Sites und VirtualHosts des
Systems. Um <acronym>HTTP</acronym>2 global zu aktivieren,
muss folgende Zeile unter der ServerName-Direktive
hinzugefügt werden:</para>
<programlisting>Protocols h2 http/1.1</programlisting>
<note>
<para>Um <acronym>HTTP</acronym>2 über Klartext zu
aktivieren, muss <acronym>h2</acronym>
<acronym>h2c</acronym> <acronym>http</acronym>/1.1 in
<filename>httpd.conf</filename> hinzugefügt werden.</para>
</note>
<para><acronym>h2c</acronym> ermöglicht die Weitergabe von
Klartext-Daten über <acronym>HTTP</acronym>2 und wird daher
nicht empfohlen. Darüber hinaus ermöglicht die Verwendung
von <acronym>http</acronym>/1.1 einen Fallback auf die
Version <acronym>HTTP</acronym>1.1 des Protokolls, falls
diese vom System benötigt wird.</para>
<para>Um <acronym>HTTP</acronym>2 für einzelne VirtualHosts zu
aktivieren, fügen Sie dieselbe Zeile innerhalb der
VirtualHosts-Direktive entweder in
<filename>httpd.conf</filename> oder
<filename>httpd-ssl.conf</filename> ein.</para>
<para>Laden Sie die Konfiguration mit dem Befehl
<command>apachectl</command> <parameter>reload</parameter>
und testen Sie die Konfiguration mit einer der folgenden
Methoden, nachdem Sie eine der Seiten besucht haben:</para>
<screen>&prompt.root; <userinput>grep "HTTP/2.0" /var/log/httpd-access.log</userinput></screen>
<para>Die Ausgabe sollte etwas Ähnliches wie dieses
zurückgeben:</para>
<programlisting>192.168.1.205 - - [18/Oct/2020:18:34:36 -0400] "GET / HTTP/2.0" 304 -
192.0.2.205 - - [18/Oct/2020:19:19:57 -0400] "GET / HTTP/2.0" 304 -
192.0.0.205 - - [18/Oct/2020:19:20:52 -0400] "GET / HTTP/2.0" 304 -
192.0.2.205 - - [18/Oct/2020:19:23:10 -0400] "GET / HTTP/2.0" 304 -</programlisting>
<para>Eine andere Methode ist die Verwendung des im Browser
integrierten Debuggers, oder das Programm
<command>tcpdump</command>. Die genaue Benutzung wird hier
jedoch nicht beschrieben.</para>
<para>Unterstützung für <acronym>HTTP</acronym>2
Reverse-Proxy-Verbindungen sind mit dem
<filename>mod_proxy_http2.so</filename>-Modul verfügbar.
Wenn Sie die ProxyPass oder RewriteRules [P]-Anweisungen
konfigurieren, sollten Sie h2:// für die Verbindung
verwenden.</para>
</sect3>
</sect2>
<sect2>