启用mod_http2并在conf文件中设置协议后,HTTP / 2配置未运行[重复]

问题描述 投票:1回答:1

这个问题在这里已有答案:

在看似正确的安装之后,HTTP / 2似乎没有运行。

我正在运行CentOS 7。

我安装了最新版本的Apache,版本为httpd-2.4.35-5.el7.x86_64,并且一直在努力让HTTP / 2正常工作。

为此,我发现我们需要运行http2_module。这是活跃的并且正在运行。我相信通过运行命令httpd -M证实了这一点。 http2_module(共享)列在这些模块下。

我知道要做的下一件事是在Protocols h2 h2c http/1.1标签上方添加<VirtualHost ...>。我也这样做了。

最后,我已经CURLed我的URL,我仍然得到HTTP / 1.1。 CURL命令:curl -vsko /dev/null --http2 https://www.thehomepainter.com

CURL的简短回复:

GET / HTTP / 1.1主机:www.thehomepainter.com用户代理:curl / 7.64.0接受:/

<HTTP / 1.1 200好的

部分来自httpd.conf

Protocols h2 h2c http/1.1
<VirtualHost *:443>
    SSLEngine on
    ServerAdmin ### omitted ###
    ServerName thehomepainter.com
    ServerAlias www.thehomepainter.com
    DocumentRoot /var/www/html/
    Options -Indexes

    ProxyRequests off
    ProxyPreserveHost On
    AllowEncodedSlashes NoDecode

    ProxyPass "/" "http://localhost:3000/"
    ProxyPassReverse "/" "http://localhost:3000/"

    RequestHeader set X-Forwarded-Proto "https"
    RequestHeader set X-Forwarded-Port "443"

    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile ### omitted ###
    SSLCertificateKeyFile ### omitted ###
    SSLCertificateChainFile ### omitted ###

    # i have tried this here as well
    # Protocols h2 h2c http/1.1
</VirtualHost>

Protocols h2 h2c http/1.1
<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName thehomepainter.com
    ServerAlias www.thehomepainter.com
    DocumentRoot /var/www/html
    RewriteEngine on
    RewriteCond %{SERVER_NAME} =thehomepainter.com [OR]
    RewriteCond %{SERVER_NAME} =www.thehomepainter.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

    # i have tried this here as well
    # Protocols h2 h2c http/1.1
</VirtualHost>

所以预期的结果是HTTP / 2工作。但是,它不是,我不明白为什么。

apache centos http2 httpconfiguration
1个回答
0
投票

在废弃错误日志后,我终于找到了问题。

[http2:warn] [pid 7155] AH10034: The mpm module (prefork.c) is not supported by mod_http2. The mpm determines how things are processed in your server. HTTP/2 has more demands in this regard and the currently selected mpm will just not do. This is an advisory warning. Your server will continue to work, but the HTTP/2 protocol will be inactive.

为了解决这个问题,我编辑了/etc/httpd/conf.modules.d/00-mpm.conf

评论这一行:LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

并取消注释底线:LoadModule mpm_event_module modules/mod_mpm_event.so

重启apache然后就可以了。

© www.soinside.com 2019 - 2024. All rights reserved.