在启用 mod_http2 并且在 conf 文件中设置协议后,HTTP/2 配置不是 运行
HTTP/2 configuration not running after mod_http2 enabled and protocols set in conf file
HTTP/2 似乎没有 运行 经过正确的安装。
我是运行 CentOS 7.
我安装了最新版本的 Apache,版本为 httpd-2.4.35-5.el7。x86_64,并且一直在努力让 HTTP/2 正常工作。
为此,我看到我们需要 http2_module 运行。即活跃且运行。我相信已经通过 运行 命令 httpd -M
确认了这一点。 http2_module(共享)列在这些模块下。
我知道接下来要做的是在 <VirtualHost ...>
标签上方添加 Protocols h2 h2c http/1.1
。我也这样做了。
最后,我用 CURL 编辑了我的 URL,但我仍然得到 HTTP/1.1.
CURL命令:curl -vsko /dev/null --http2 https://www.thehomepainter.com
CURL的简短回复:
GET / HTTP/1.1
Host: www.thehomepainter.com
User-Agent: curl/7.64.0
Accept: /
< HTTP/1.1 200 OK
部分来自 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>
所以预期的结果是 HTTP/2 起作用。然而,它不是,我不知道为什么。
翻阅错误日志后,我终于找到了问题所在。
[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就可以了。
HTTP/2 似乎没有 运行 经过正确的安装。
我是运行 CentOS 7.
我安装了最新版本的 Apache,版本为 httpd-2.4.35-5.el7。x86_64,并且一直在努力让 HTTP/2 正常工作。
为此,我看到我们需要 http2_module 运行。即活跃且运行。我相信已经通过 运行 命令 httpd -M
确认了这一点。 http2_module(共享)列在这些模块下。
我知道接下来要做的是在 <VirtualHost ...>
标签上方添加 Protocols h2 h2c http/1.1
。我也这样做了。
最后,我用 CURL 编辑了我的 URL,但我仍然得到 HTTP/1.1.
CURL命令:curl -vsko /dev/null --http2 https://www.thehomepainter.com
CURL的简短回复:
GET / HTTP/1.1 Host: www.thehomepainter.com User-Agent: curl/7.64.0 Accept: /
< HTTP/1.1 200 OK
部分来自 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>
所以预期的结果是 HTTP/2 起作用。然而,它不是,我不知道为什么。
翻阅错误日志后,我终于找到了问题所在。
[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就可以了。