Apache 启用mod_http2并在conf文件中设置协议后,HTTP/2配置未运行
HTTP/2似乎在正确安装之后没有运行 我正在运行CentOS 7 我安装了最新版本的Apache,版本httpd-2.4.35-5.el7.x86_64,并一直在尝试让HTTP/2正常工作 为此,我认为我们需要运行http2_模块。这是积极的和运行。我相信已经通过运行命令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
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
接受:/
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,然后它就可以工作了