当前位置 主页 > 服务器问题 > nginx问题汇总 >

    将ngx_brotli编译成动态nginx模块的方法

    栏目:nginx问题汇总 时间:2019-07-03 13:06

      Nginx从nginx 1.9.11开始就支持动态模块,所以我们尝试一下把gx_brotli编译成动态nginx模块,安装前的系统需求是:
      sudo apt-get install autoconf libtool nginx-extras.
      本文的测试环境是ubuntu 14.04, ppa:nginx/stable, nginx/1.10.1.
      首先安装libbrotli:
      git clone https://github.com/bagder/libbrotli
      ./autogen.sh
      ./configure
      make
      sudo make install.
      为了让libbrotli的程序能够加载so文件,所以我们创建一个软链:
      sudo ln -s /usr/local/lib/libbrotlienc.so.1 /lib/libbrotlienc.so.1.
      然后下载好nginx和ngx_brotli的源代码:
      wget http://nginx.org/download/nginx-1.10.1.tar.gz
      git clone https://github.com/google/ngx_brotli
      编辑ngx_brotli/config文件,在顶部添加如下一行:
      have=NGX_HTTP_HEADERS . auto/have
      然后就在nginx源码目录执行configure:
      ./configure \
      --add-dynamic-module=../ngx_brotli/ \
      --with-http_dav_module \
      --with-http_realip_module \
      --with-http_v2_module \
      --with-threads \
      --with-http_ssl_module \
      --with-ipv6
      并make,则到两个so文件:
      $ find -name ngx_http_brotli*.so
      ./objs/ngx_http_brotli_static_module.so
      ./objs/ngx_http_brotli_filter_module.so
      最后加载模块:
      在/etc/nginx/nginx.conf文件中把下面两行加入,使nginx加载模块:
      load_module '/path/to/ngx_http_brotli_static_module.so';
      load_module '/path/to/ngx_http_brotli_filter_module.so';
      最后在http段中加入下面两个配置:
      brotli on;
      brotli_static on;
      最后执行sudo nginx -t 看看有没有错误,如果没有错误的话那就成功了。不过,brotli压缩算法只有在https连接中才会生效。