Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 启用mod_http2并在conf文件中设置协议后,HTTP/2配置未运行_Apache_Centos_Http2_Httpconfiguration - Fatal编程技术网

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

Apache 启用mod_http2并在conf文件中设置协议后,HTTP/2配置未运行,apache,centos,http2,httpconfiguration,Apache,Centos,Http2,Httpconfiguration,HTTP/2似乎在正确安装之后没有运行 我正在运行CentOS 7 我安装了最新版本的Apache,版本httpd-2.4.35-5.el7.x86_64,并一直在尝试让HTTP/2正常工作 为此,我认为我们需要运行http2_模块。这是积极的和运行。我相信已经通过运行命令httpd-M确认了这一点。http2_模块(共享)列在这些模块下 我知道要做的下一件事是在标记上方添加协议H2H2C http/1.1。我也这样做过 最后,我卷曲了我的URL,我仍然得到HTTP/1.1。 CURL命令:CU

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

我正在运行CentOS 7

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

为此,我认为我们需要运行http2_模块。这是积极的和运行。我相信已经通过运行命令
httpd-M
确认了这一点。http2_模块(共享)列在这些模块下

我知道要做的下一件事是在
标记上方添加
协议H2H2C http/1.1
。我也这样做过

最后,我卷曲了我的URL,我仍然得到HTTP/1.1。
CURL命令:
CURL-vsko/dev/null--http2https://www.thehomepainter.com

委员会的简短回应:

GET/HTTP/1.1 主持人:www.thehomepainer.com 用户代理:curl/7.64.0 接受:/

部分来自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 support@thedesignguis.com
    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>
协议h2 h2c http/1.1 斯伦金安 ServerAdmin####省略### 服务器名thehomepainter.com 服务器别名www.thehomepainer.com DocumentRoot/var/www/html/ 选项-索引 代理请求关闭 代理主机 AllowEncodeDSL节点代码 代理过程“/”http://localhost:3000/" ProxyPassReverse“/”http://localhost:3000/" RequestHeader集合X-Forwarded-Proto“https” RequestHeader设置X转发端口“443” Include/etc/letsencrypt/options-ssl-apache.conf SSLCertificateFile####省略### SSLCertificateKeyFile####省略### SSLCertificateChainFile####省略### #我在这里也试过 #协议h2 h2c http/1.1 协议h2 h2c http/1.1 服务器管理员support@thedesignguis.com 服务器名thehomepainter.com 服务器别名www.thehomepainer.com DocumentRoot/var/www/html 重新启动发动机 RewriteCond%{SERVER_NAME}=thehomepainer.com[或] RewriteCond%{SERVER_NAME}=www.thehomepainer.com 重写规则^https://%{SERVER_NAME}%{REQUEST_URI}[END,NE,R=permanent] #我在这里也试过 #协议h2 h2c http/1.1
因此,预期的结果是HTTP/2能够工作。然而,事实并非如此,我也不知道原因。

通过错误日志,我最终发现了问题

[http2:warn][pid 7155]AH10034:mod_http2不支持mpm模块(prefork.c)。mpm决定如何在服务器中处理内容。HTTP/2在这方面有更多的要求,而当前选择的mpm将不起作用。这是一个警告。您的服务器将继续工作,但HTTP/2协议将处于非活动状态。

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

注释掉这一行:
LoadModule mpm\u prefork\u module modules/mod\u mpm\u prefork.so

并取消注释底线:
LoadModule mpm\U事件\u模块/mod\u mpm\U事件。因此

重新启动apache,然后它就可以工作了