我的服务器配置有问题,我的网站使用 http 请求时运行良好,但当我使用 letsencrypt 证书将其更改为 https(以启用 http2)时,服务器变得非常慢。使用 http 的正常请求将需要 4 到 7 秒,但使用 https 时,大多数请求(90%)需要长达 45 秒。我拥有最新的稳定版 apache,并按照官方文档安装了 letsencrypt。
我已经寻找解决方案近一周了,但没有成功,如何解决这个问题?
答案1
1) 实施 SSL/TLS 自然会产生额外的延迟。这是因为需要先协商安全通信。因此 HTTP 比 HTTPS 更快。但这通常不会导致您的 4-7 秒加载时间延长至 45 秒。
2) 这不是 Let's Encrypt 的问题。他们只是为您提供证书,就像其他 CA 一样。他们的证书加载或协商所花的时间不会比其他 CA 多。
3) 检查您是否已优化系统以使用 SSL/TLS。我建议您只使用 2048 位密钥,而不是 4096 位。根据行业标准,所有 2048 位密钥都被视为安全,而 4096 位只会花费您更多的处理资源和时间。但是,即使使用 4096 位,也不会让您的加载时间增加到 45 秒。
你也可以参考 Mozilla以获取一些更新的 SSL 指令和密码。
最后,请考虑检查您的 VirtualHost 和 SSL 配置/etc/apache2/mods-enabled/ssl.conf
。问题不直接出在您的证书上。
答案2
你应该尝试激活http2。具体步骤如下:
a2dismod php7.0
a2dismod mpm_prefork
a2enmod mpm_event
a2enmod http2
systemctl restart apache2
然后编辑(或创建文件):
nano /etc/apache2/conf-available/http2.conf
并写下以下内容:
<IfModule http2_module>
Protocols h2 h2c http/1.1
H2Direct on
</IfModule>
然后启用并重新启动:
a2enconf http2
systemctl restart apache2
这是来源(在西班牙语中)