我刚从2.4.7升级到2.4.25 apache(在Ubuntu 14.04上),一切正常,之后我启用了http2模块,并将其插入到我的虚拟主机中:
Protocols h2 http/1.1
之后,我试图在浏览器中打开网站,它只是加载和加载。
这是我的SSL设置:
SSLEngine on SSLCertificateFile /etc/letsencrypt/live/*/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/*/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/*/chain.pem
这是我的虚拟主机:
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>
如果我尝试从curl(curl -I hxxps://mywebsite.com)我得到这个:
Upgrade: h2 Connection: Upgrade
我也检查日志(访问和错误),但没有什么。
任何想法,为什么我的网站在启用http2协议后不工作?
如果我在这里testingmywebsite: https ://tools.keycdn.com/http2-test,它说我的网站支持HTTP / 2.0。
从LogLevel http2:info更改为LogLevel http2:debug ,我在error.log中find了这个:
[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)
你需要nghttp来运行mod_http2。
您将以下内容添加到您的configuration中:
<IfModule http2_module> LogLevel http2:info </IfModule>
然后重新启动Apache,并启动不仅仅是一个正常的重启。 在错误日志中你应该看到像这样的细节:
[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
请在你的问题上加上你的版本。
你能看到进入访问日志的请求吗? 那里是HTTP / 1.1还是HTTP / 2?
另外我想你启用了http2模块?
a2enmod http2
你可以手动启动Apache,并通过以root身份运行以下命令来查看是否有任何错误?
/etc/init.d/apache2 restart