如何在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
- 根特权
我们将要做什么?
- 安装构建依赖关系
- 用ngx_brotli安装Nginx
- 添加Nginx存储库
- 下载Nginx和ngx_brotli
- 用ngx_brotli支持构建Nginx
- 安装Nginx并启用ngx_brotli支持
第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和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已被下载。
用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包。
运行下面的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
带有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 -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服务器获取所有请求和响应标题,如下所示。
在“响应标题”部分,您将看到brotli支持的'content-encoding:br'。
现在,如果您想要进行其他测试,可以使用curl命令,如下所示。
curl -H 'Accept-Encoding: br' -I https://nginx.hakase-labs.io
你会看到brotli支持的结果'content-encoding:br'。
Ubuntu 18.04上Brotli压缩支持的Nginx安装已成功完成。