Apache 不提供 H2

标签 apache http debian h2 tls1.2

今天早上,我致力于让我所有的网站都通过 HTTPS 运行,我想借此机会切换到 HTTP2。

我的服务器运行的是 Debian 8。我已将 Apache 更新到 2.4.29 以获得 H2 支持。

我已经为我的所有域创建了 TLS 证书,它们都运行良好(TLS 1.2,使用 letsencrypt 创建)

我认为一切都已配置好让 apache 在 H2 中提供服务,但出于某种原因我只获得了 HTTP/1.1 协议(protocol)。

我启用了 http2 apache 模块:

a2enmod http2

我还创建了一个包含以下信息的 http2.conf(我也已启用):

Protocols h2 h2c http/1.1

H2Push          on
H2PushPriority  *                       after
H2PushPriority  text/css                before
H2PushPriority  image/jpeg              after   32
H2PushPriority  image/png               after   32
H2PushPriority  application/javascript  interleaved

SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite 'EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS'

来源:https://www.shivering-isles.com/http-2-getting-ready-on-debian-with-apache2/

我也试过不使用这个 conf 文件并在主 apache conf 文件或虚拟主机中添加“Protocols h2 h2c http/1.1”,但它仍然是一样的。

知道为什么 Apache 使用 HTTP/1.1 而不是 H2 吗?

最佳答案

您是否正在使用 mpm_event 运行 apache2? 然后您还需要为 PHP 启用 fastcgi 处理程序,激活 PHP-fpm 的配置并禁用 PHP apache2 模块。

你的命令应该是这样的:

root@host:/etc/apache2# a2dismod php7.2 
root@host:/etc/apache2# a2enmod proxy proxy_fcgi
root@host:/etc/apache2# a2enconf php7.2-fpm
root@host:/etc/apache2# a2dismod mpm_prefork 
root@host:/etc/apache2# a2enmod mpm_event
Enabling module mpm_event.
To activate the new configuration, you need to run:
systemctl restart apache2

root@host:/etc/apache2# systemctl restart apache2

用您的版本替换 PHP 版本号(我使用 7.2)。如果您需要,请在评论中告诉我,PHP fcgi 配置有一些更深入的配置设置。

关于Apache 不提供 H2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49875304/

相关文章:

apache - Solr 查询搜索单个关键字的多个实例

php - 禁用 apache2 日志

shell - 在 Tex 文件中包含日期和时间

去安装不工作

php - .htaccess 使用 GET 参数重定向

java - 使用 apache 元模型更新 excel 文件

php - UTF-8贯穿始终

ruby - 使用 ruby​​ http 响应时 'readbody' 的含义

javascript - 从 HTTP 页面通过 HTTPS 获取 JS 文件

c++ - 如何从 QNetworkReply 读取 header