如何在Debian 8 Jessie服务器上使用Nginx启用HTTP2协议

本教程将向您展示如何在Debian 8服务器上使用Nginx启用HTTP / 2协议,以加快网页加载速度。 有2个要求。

  • Nginx 1.9.5或更高版本,使用OpenSSL 1.0.2构建
  • 启用HTTPS

让我们一一解决。

从Jessie Backports Repo安装Nginx

ALPN(应用程序层协议协商)是TLS扩展,允许服务器与Web浏览器协商HTTP / 2协议。 如果没有ALPN,则即使Web服务器和Web浏览器都支持HTTP / 2,也无法建立HTTP / 2连接。 OpenSSL库支持从1.0.2版开始声明的ALPN。

Debian 8具有OpenSSL 1.0.1。 要检查您的OpenSSL版本,请运行

openssl version

请注意,无需在系统上安装OpenSSL 1.0.2。 我们只需要使用OpenSSL 1.0.2构建的Nginx 1.9.5或更高版本。 Nginx在1.9.5版中添加了对HTTP / 2的支持。 默认的Debian 8仓库有Nginx 1.6.2。 幸运的是,Jessie backports回购提供了使用OpenSSL 1.0.2l构建的Nginx 1.10.3。

要添加此存储库,请创建源列表文件。

sudo nano /etc/apt/sources.list.d/jessie-backports.list

将以下行添加到此文件。

deb http://ftp.debian.org/debian jessie-backports main

保存并关闭文件。 然后更新软件包索引,并从Jessie backports存储库安装Nginx。

sudo apt update
sudo apt -t jessie-backports install nginx

检查Nginx版本并配置参数。

sudo nginx -V

输出:

nginx version: nginx/1.10.3
built with OpenSSL 1.0.2l 25 May 2017
TLS SNI support enabled

Nginx.org存储库包含用于Debian 8的Nginx的最新版本。但是该软件包是针对OpenSSL 1.0.1构建的,因此不支持ALPN。

在Debian 8上安装SSL证书

我们可以安装由Let’s Encrypt发行的免费SSL证书。 首先,从Jessie Backports仓库在Debian 8上安装Let’s Encrypt客户端(Certbot)。 Python-certbot-nginx 是Certbot的Nginx插件。

sudo apt install -t jessie-backports certbot python-certbot-nginx

现在,如果您已经配置了Nginx虚拟主机,则使用Nginx插件来获取并安装SSL证书,如下所示

sudo certbot --nginx --agree-tos -d example.com --redirect --staple-ocsp --must-staple --email your-email-address

说明:

  • --nginx:使用Nginx插件
  • --agree-tos:同意让我们加密服务条款
  • --redirect:针对新认证的虚拟主机,将所有HTTP通信自动重定向到HTTPS。
  • --staple-ocsp:启用OCSP装订
  • --must-staple:将OCSP必须装订扩展名添加到证书中
  • --email:用于注册和恢复联系的电子邮件

启用HTTP2协议

默认情况下,Certbot不会为Nginx配置HTTP / 2。 要启用HTTP / 2,请编辑您的Nginx虚拟主机文件。 查找以下指令。

listen 443 ssl;

然后像下面一样添加http2。

listen 443 ssl http2;

保存并关闭文件。 重新加载Nginx。

sudo systemctl reload nginx

测试

您如何知道您的站点实际上正在使用HTTP2协议?

  • 在Firefox或Google Chrome浏览器中,加载您的网站页面,然后按 Ctrl+Shift+I 打开 开发者工具, 点击 网络 标签。 您可以看到您的域使用的协议。
  • 您也可以在Google Chrome浏览器中安装HTTP / 2和SPDY Indicator扩展。
  • 在Firefox中安装HTTP / 2 Indicator扩展。
  • KeyCDN的在线HTTP / 2测试工具可以告诉您您的站点是否支持HTTP / 2和ALPN。

请注意,您可能需要清除浏览器的缓存,因为缓存的对象可能被错误地标记为HTTP / 1.1协议。

改进措施

Certbot Nginx插件仍不成熟。 使用Nginx插件后,由于使用了弱密钥交换参数,我在SSL实验室测试中获得了B。 Mozilla SSL配置生成器是帮助您创建现代SSL配置的好工具。

而已! 我希望本教程可以帮助您在Debian 8服务器上使用Nginx启用HTTP / 2。 与往常一样,如果您发现此帖子有用,请订阅我们的免费新闻通讯。

Sidebar