如何在Ubuntu 18.04 LTS上使用brotli压缩来安装Nginx

在本教程中,我将逐步向您展示如何在Nginx Web服务器中添加对Brotli压缩算法的支持。 Brotli是一个开源的compr ...

如何在Ubuntu 18.04 LTS上使用brotli压缩来安装Nginx

Nginx (engine-x)是一款开源的高性能HTTP服务器,反向代理和IMAP / POP3代理服务器。 Nginx的突出特性是稳定性,丰富的功能集,简单的配置和低内存消耗。

Brotli是由Google创建的开源压缩算法。 Brotli提供比gzip更好的无损压缩,现在它已被主流浏览器和Web服务器所支持。

更多关于Brotli表现的信息:

在本教程中,我将逐步向您展示如何在Nginx Web服务器中添加对Brotli压缩算法的支持。 我们将构建一个支持brotli压缩算法的自定义nginx包。 我们将使用最新的Ubuntu版本,另外我们将为Debian操作系统构建一个nginx软件包。

先决条件

  • Ubuntu 18.04
  • 根特权

我们将要做什么?

  1. 安装构建依赖关系
  2. 用ngx_brotli安装Nginx
  • 添加Nginx存储库
  • 下载Nginx和ngx_brotli
  • 用ngx_brotli支持构建Nginx
  • 安装Nginx并启用ngx_brotli支持
  • 配置Nginx虚拟主机
  • 测试
  • 第1步 - 安装构建依赖关系

    本指南需要的第一件事是将构建依赖关系安装到系统上。

    更新Ubuntu存储库,然后使用下面的apt命令安装所有软件包构建依赖关系。

    sudo apt update
    sudo apt install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev unzip

    等待所有安装的软件包。

    第2步 - 用ngx_brotli安装Nginx

    在这一步中,我们将在Ubuntu系统上安装支持brotli压缩算法的自定义nginx软件包。 我们将使用可从官方nginx存储库下载的最新稳定版nginx软件包。

    添加Nginx存储库

    在添加nginx存储库之前,使用以下命令添加nginx密钥标记。

    curl -L https://nginx.org/keys/nginx_signing.key | sudo apt-key add -

    现在使用vim编辑器在'/etc/apt/sources.list.d'目录下创建新的nginx存储库文件'nginx.list'。

    vim /etc/apt/sources.list.d/nginx.list

    粘贴下面的配置。

    deb http://nginx.org/packages/ubuntu/ bionic nginx
    deb-src http://nginx.org/packages/ubuntu/ bionic nginx

    保存并退出。

    现在更新ubuntu存储库。

    sudo apt-get update

    Nginx存储库已添加。

    添加Nginx存储库

    下载Nginx和ngx_brotli源文件

    现在我们将使用apt命令从nginx存储库下载Nginx包。

    转到'/ usr / local / src'目录并使用下面的apt命令下载Nginx源代码。

    cd /usr/local/src
    sudo apt source nginx

    现在为nginx安装所有需要的软件包依赖关系。

    sudo apt build-dep nginx -y

    在所有安装完成后,从GitHub克隆'ngx_brotli'源代码。

    git clone --recursive https://github.com/google/ngx_brotli.git

    Nginx和ngx_brotli已被下载。

    下载Nginx和ngx_brotli源文件

    用ngx_brotli支持构建Nginx

    现在我们需要编辑默认的Nginx构建规则,我们需要将ngx_brotli添加到包的构建规则中。

    进入'/ usr / local / src / nginx- *'目录并编辑debian的'rules'配置。

    cd /usr/local/src/nginx-*/
    vim debian/rules

    现在你将得到' config.env.nginx '和' config.env.nginx_debug '的两个构建环境。 将ngx_brotli的'--add-module ='选项添加到两个构建的环境中。

    --add-module=/usr/local/src/ngx_brotli

    保存并退出。

    用ngx_brotli支持构建Nginx

    我们已经准备好用ngx_brotli支持来编译和构建nginx包。

    运行下面的dpkg命令。

    sudo dpkg-buildpackage -b -uc -us

    注意:

    • -b:构建只有二进制文件,没有源文件。
    • -uc:无符号.buildinfo和.changes文件。
    • -us:无符号的源代码包。

    构建完成后,您将在'/ usr / local / src'目录下获得nginx - *。deb软件包,如下所示。

    ls -lah

    包构建完成

    安装Nginx并启用Brotli支持

    使用ngx_brotli编译的nginx已经完成,请使用下面的dpkg命令安装nginx - *。deb软件包。

    cd /usr/local/src/
    sudo dpkg -i *.deb

    安装Nginx并启用Brotli支持

    带有ngx_brotli支持的Nginx已经安装。

    现在进入'/ etc / nginx'配置目录并编辑配置文件'nginx.conf'。

    cd /etc/nginx/
    vim nginx.conf

    通过在'http {...}'部分添加以下配置来启用nginx上的ngx_brotli。

        brotli on;
        brotli_comp_level 6;
        brotli_static on;
        brotli_types text/plain text/css application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript image/x-icon image/vnd.microsoft.icon image/bmp image/svg+xml;

    保存并退出。

    Nginx配置

    测试nginx配置并确保没有错误。

    nginx -t

    brotli压缩支持已启用。

    第3步 - 配置Nginx虚拟主机

    在这一步中,我们将尝试为域名nginx.hakase-labs.io创建一个新的虚拟主机。

    注意:

    • Brotli压缩仅支持HTTPS站点,因此请确保您拥有您的域名的证书文件,或者您可以生成免费的Letsencrypt SSL证书。

    转至'/ etc / nginx'配置目录并创建新的虚拟主机配置'brotli.conf'。

    cd /etc/nginx/
    vim conf.d/brotli.conf

    在那里粘贴下面的nginx虚拟主机配置。

    # Redirect HTTP to HTTPS Nginx
    server { listen 80; server_name nginx.hakase-labs.io; return 301 https://$host$request_uri; } # SSL configuration server { listen 443 ssl http2; server_name nginx.hakase-labs.io;
    ssl_certificate /etc/letsencrypt/live/nginx.hakase-labs.io/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/nginx.hakase-labs.io/privkey.pem; # Improve HTTPS performance with session resumption ssl_session_cache shared:SSL:10m; ssl_session_timeout 5m; # Enable server-side protection against BEAST attacks ssl_prefer_server_ciphers on; ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5; # Disable SSLv3 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    # web root directory location / { root /usr/share/nginx/html; } }

    保存并退出。

    注意:

    • 使用您自己的域名更改域名。
    • 更改SSL证书路径。

    现在测试nginx配置并确保没有错误,然后重新启动服务。

    nginx -t
    systemctl restart nginx

    新的nginx虚拟主机已添加。

    第4步 - 测试

    打开您的网络浏览器并输入域名,我的是:

    http://nginx.hakase-labs.io

    现在您将被重定向到https连接。 在页面上点击右键,然后点击' 检查元素 '。 点击“ 网络 ”标签并重新加载页面。

    点击请求详细信息,您将从Web服务器获取所有请求和响应标题,如下所示。

    Nginx的测试页面

    在“响应标题”部分,您将看到brotli支持的'content-encoding:br'。

    现在,如果您想要进行其他测试,可以使用curl命令,如下所示。

    curl -H 'Accept-Encoding: br' -I https://nginx.hakase-labs.io

    你会看到brotli支持的结果'content-encoding:br'。

    Brotli编码

    Ubuntu 18.04上Brotli压缩支持的Nginx安装已成功完成。

    参考