up

nginx 安装 并 配置gzip和br

十月 30, 2020阅读:636字数:2990评论:13喜欢: 2

安装 brotli

  1. cd /usr/local/src
  2. git clone https://github.com/google/ngx_brotli
  3. cd ngx_brotli
  4. git submodule update --init
  5. 然后可以愉快的安装nginx啦

安装nginx

  1. 首先安装nginx<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15" class="v-md-svg-outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg>最新版(例如我装的是1.18.0版本)
  2. 下载解压包放置到/usr/local/src 并cd到该位置
  3. tar -zxvf nginx-1.18.0.tar.gz 解压
  4. cd nginx-1.18.0 进入到nginx目录
  5. ./configure --prefix=/www/server/nginx --with-http_gzip_static_module --with-http_stub_status_module --add-module=/www/ngx_brotli (这里–prefix后面带的是安装目录)
  6. make && make install

旧版本nginx 会出现如下两个问题,新版本的并不会

到这里重点来了

我在这里遇到了两个报错
第一个是

原因是是将警告当成了错误处理,打开 nginx的安装目录/objs/Makefile,去掉CFLAGS中的-Werror,再重新make

第二个是

进到 src/os/unix/ngx_user.c 把该行注释掉就好了

配置nginx

输入nginx -t
提示类似如下即正确
nginx: the configuration file /www/server/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /www/server/nginx/conf/nginx.conf test is successful

然后进入到nginx安装目录(也就是prefix后面带的目录)下的sbin文件夹,输入./nginx 启动 nginx

然后打开端口

firewall-cmd --add-port=80/tcp --permanent
#重启防火墙
systemctl restart firewalld

配置gzip和br

打开 nginx.conf 配置文件
在http中 增加如下

#开启和关闭gzip模式
gzip on;
#gizp压缩起点,文件大于1k才进行压缩
gzip_min_length  1k;
# 设置压缩所需要的缓冲区大小,以4k为单位,如果文件为7k则申请2*4k的缓冲区 
gzip_buffers     4 16k;
#nginx对于静态文件的处理模块,开启后会寻找以.gz结尾的文件,直接返回,不会占用cpu进行压缩,如果找不到则不进行压缩
gzip_static on;
# 识别http协议的版本,早起浏览器可能不支持gzip自解压,用户会看到乱码
gzip_http_version 1.1;
# gzip 压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间
gzip_comp_level 1;
# 进行压缩的文件类型。
gzip_types     text/plain application/json application/javascript application/x-javascript text/javascript text/css application/xml image/jpeg image/gif image/png video/mpeg audio/x-pn-realaudio audio/x-midi audio/basic audio/mpeg audio/ogg audio/* video/mp4;
# 启用应答头"Vary: Accept-Encoding"
gzip_vary on;
# nginx做为反向代理时启用,off(关闭所有代理结果的数据的压缩),expired(启用压缩,如果header头中包括"Expires"头信息),no-cache(启用压缩,header头中包含"Cache-Control:no-cache"),no-store(启用压缩,header头中包含"Cache-Control:no-store"),private(启用压缩,header头中包含"Cache-Control:private"),no_last_modefied(启用压缩,header头中不包含"Last-Modified"),no_etag(启用压缩,如果header头中不包含"Etag"头信息),auth(启用压缩,如果header头中包含"Authorization"头信息)
gzip_proxied   expired no-cache no-store private auth;
# (IE5.5和IE6 SP1使用msie6参数来禁止gzip压缩 )指定哪些不需要gzip压缩的浏览器(将和User-Agents进行匹配),依赖于PCRE库
gzip_disable   "MSIE [1-6]\.";
# 是否启用在on-the-fly方式压缩文件,启用后,将会在响应时对文件进行压缩并返回。
brotli on;
# 启用后将会检查是否存在带有br扩展的预先压缩过的文件。如果值为always,则总是使用压缩过的文件,而不判断浏览器是否支持。
brotli_static always;
# 设置压缩质量等级。取值范围是0到11.
brotli_comp_level 6;
# 设置缓冲的数量和大小。大小默认为一个内存页的大小,也就是4k或者8k。
brotli_buffers 16 8k;
# 设置需要进行压缩的最小响应大小。
brotli_min_length 20;
# 指定对哪些内容编码类型进行压缩。text/html内容总是会被进行压缩
brotli_types text/plain application/json application/javascript application/x-javascript text/javascript text/css application/xml image/jpeg image/gif image/png video/mpeg audio/x-pn-realaudio audio/x-midi audio/basic audio/mpeg audio/ogg audio/* video/mp4;

写完之后 在命令行输入 nginx -t
输出跟上面一样就证明配置完成
接下来重启下nginx就OK了 nginx -s reload

总结

开启br之后,首屏加载速度快了十几倍,不过br只有在https模式下才有效,http只会生效gzip

评论列表(13)
123
回复
2022-03-08 13:57:14
good
4542131
回复
2021-11-16 01:22:39
<script>alert(“~~~”)</script>
大大
回复
2021-07-02 05:59:10
我来试试评论的
哈哈哈哈哈哈哈哈
回复
2021-06-25 17:29:06
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
gary
回复
2021-03-23 10:09:29
<script>alert(“hey!”)</script>
pcy
回复
2021-01-05 08:55:55
090
22
回复
2020-11-19 09:08:54
2123123
22
回复
2020-11-19 08:52:14
1
22
回复
2020-11-19 08:52:20
2
ceshi
回复
2021-04-21 07:05:21
333
ceshi
回复
2021-04-21 07:05:40
3333
小程序
回复
2020-11-19 07:27:55
不错
1
回复
2020-11-06 01:51:29
2