Nach der Aktivierung von http2 funktioniert meine Website nicht mehr

Nach der Aktivierung von http2 funktioniert meine Website nicht mehr

Ich habe gerade Apache (unter Ubuntu 14.04) von 2.4.7auf aktualisiert 2.4.25und alles war in Ordnung. Danach habe ich das http2-Modul aktiviert und dies in meinen virtuellen Host eingefügt:

Protocols h2 http/1.1

Danach habe ich versucht, die Site im Browser zu öffnen, aber sie wird einfach geladen und geladen.

Hier sind meine SSL-Einstellungen:

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/*/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/*/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/*/chain.pem

Hier ist mein virtueller Host:

DocumentRoot /home/mywebsite
ServerName mywebsite.com

</Directory>


<IfModule mod_php7.c>
        php_admin_flag allow_url_fopen Off
        php_admin_value open_basedir "/home/mywebsite/:/tmp/"
</IfModule>

<IfModule mod_headers.c>
    Header unset ETag
    Header set X-Frame-Options: deny
    Header set X-XSS-Protection: "1; mode=block"
    Header set X-Content-Type-Options: nosniff
    Header set X-WebKit-CSP: "default-src 'self'"
    Header set X-Permitted-Cross-Domain-Policies: "master-only"
    Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
</IfModule>

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>

Wenn ich es von curl aus versuche (curl -I hxxps://mywebsite.com), erhalte ich Folgendes:

Upgrade: h2
Connection: Upgrade

Außerdem habe ich die Protokolle (Zugriff und Fehler) überprüft, aber da ist nichts.

Irgendwelche Ideen, warum meine Website nach der Aktivierung des Protokolls nicht funktioniert http2?

Wenn ich meine Website hier teste:https://tools.keycdn.com/http2-test, dort steht, dass meine Site HTTP/2.0 unterstützt.

Nach dem Wechsel von LogLevel http2:infozu LogLevel http2:debugerhalte ich Folgendes in meinem error.log:

[Wed Jan 25 07:40:25.830096 2017] [http2:debug] [pid 5300] h2_session.c(1007): [client 192.168.1.25:43190] AH03200: h2_session(5) created, max_streams=100, stream_mem=65536, workers_limit=6, workers_max=1, push_diary(type=1,N=256)
[Wed Jan 25 07:40:25.830143 2017] [http2:debug] [pid 5300] h2_session.c(1109): [client 192.168.1.25:43190] AH03201: h2_session(5): start, INITIAL_WINDOW_SIZE=65535, MAX_CONCURRENT_STREAMS=100
[Wed Jan 25 07:40:25.830153 2017] [http2:debug] [pid 5300] h2_session.c(2073): [client 192.168.1.25:43190] AH03079: h2_session(5): started on mywebsite.com:443
[Wed Jan 25 07:40:25.830166 2017] [http2:debug] [pid 5300] h2_session.c(1742): [client 192.168.1.25:43190] AH03078: h2_session(5): transit [INIT] -- init --> [BUSY]
[Wed Jan 25 07:40:25.830196 2017] [http2:debug] [pid 5300] h2_session.c(661): [client 192.168.1.25:43190] AH03068: h2_session(5): sent FRAME[SETTINGS[length=6, stream=0]], frames=0/0 (r/s)
[Wed Jan 25 07:40:25.830206 2017] [http2:debug] [pid 5300] h2_session.c(661): [client 192.168.1.25:43190] AH03068: h2_session(5): sent FRAME[WINDOW_UPDATE[stream=0, incr=2147418112]], frames=0/1 (r/s)
[Wed Jan 25 07:40:25.830248 2017] [http2:debug] [pid 5300] h2_session.c(1742): [client 192.168.1.25:43190] AH03078: h2_session(5): transit [BUSY] -- no io (keepalive) --> [IDLE]
[Wed Jan 25 07:40:25.873960 2017] [http2:debug] [pid 5300] h2_session.c(439): [client 192.168.1.25:43190] AH03066: h2_session(5): recv FRAME[SETTINGS[length=12, stream=0]], frames=0/2 (r/s)
[Wed Jan 25 07:40:25.873992 2017] [http2:debug] [pid 5300] h2_session.c(439): [client 192.168.1.25:43190] AH03066:  h2_stream(5-13): opened
[Wed Jan 25 07:40:25.874084 2017] [http2:debug] [pid 5300] h2_session.c(439): [client 192.168.1.25:43190] AH03066: h2_session(5): recv FRAME[HEADERS[length=331, hend=1, stream=13, eos=1]], frames=7/2 (r/s)




    [Wed Jan 25 08:00:43.593021 2017] [http2:debug] [pid 6637] h2_session.c(439): [client 192.168.1.25:43518] AH03066: h2_session(21): recv FRAME[PING[length=8, ack=0, stream=0]], frames=10/3 (r/s)
[Wed Jan 25 08:00:43.593096 2017] [http2:debug] [pid 6637] h2_session.c(661): [client 192.168.1.25:43518] AH03068: h2_session(21): sent FRAME[PING[length=8, ack=1, stream=0]], frames=11/3 (r/s)

Antwort1

Sie benötigen nghttp, um mod_http2 auszuführen.

Sie fügen Ihrer Konfiguration Folgendes hinzu:

<IfModule http2_module>
    LogLevel http2:info
</IfModule>

Und starten Sie Apache dann mit einem vollständigen Stopp neu, nicht nur mit einem anmutigen Neustart. Im Fehlerprotokoll sollten Sie Details wie diese sehen:

[Wed Jan 04 18:12:07.003271 2016] [http2:info] [pid 12345:tid 123456789012345] mod_http2 (v1.8.3, nghttp2 1.18.0), initializing...
[Wed Jan 04 18:12:07.004910 2016] [mpm_event:notice] [pid 12345:tid 123456789012345] AH00489: Apache/2.4.25 (Unix) OpenSSL/1.0.2j configured -- resuming normal operations

Bitte fügen Sie Ihrer Frage Ihre Version des Obigen hinzu.

Können Sie die Anfragen in den Zugriffsprotokollen sehen? Handelt es sich dort um HTTP/1.1 oder HTTP/2?

Ich gehe außerdem davon aus, dass Sie das http2-Modul aktiviert haben?

a2enmod http2

Können Sie Apache manuell starten und prüfen, ob Fehler auftreten, indem Sie Folgendes als Root ausführen?:

/etc/init.d/apache2 restart

verwandte Informationen