栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Openresty新添加模块

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Openresty新添加模块

前言

前几天,前端提出了个需求,线上web服务器开启gzip模块。可以节约网站出口带宽,加快数据传输效率,提升用户体验。由于使用的Openresty和nginx还有点差别,下面记录一下过程。



Openresty同nginx一样,增加模块需要重新编译



Openresty添加模块

<1>安装依赖包

yum install -y gcc gcc-c++ zlib-devel pcre-devel openssl-devel readline-devel

如果是在其他环境新部署一个openresty,需要安装依赖包。如果是已有openresty环境,无需再次安装



<1>查看线上Openresty的编译参数
(由于是新增加模块,不能把原来的模块丢失了,所以先查看一下原来的编译参数)

/usr/local/openresty/nginx/sbin/nginx -V
nginx version: openresty/1.15.8.1     
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/openresty/nginx --with-cc-opt=-O2 --add-module=../ngx_devel_kit-0.3.1rc1 --add-module=../echo-nginx-module-0.61 --add-module=../xss-nginx-module-0.06 --add-module=../ngx_coolkit-0.2 --add-module=../set-misc-nginx-module-0.32 --add-module=../form-input-nginx-module-0.12 --add-module=../encrypted-session-nginx-module-0.08 --add-module=../srcache-nginx-module-0.31 --add-module=../ngx_lua-0.10.15 --add-module=../ngx_lua_upstream-0.07 --add-module=../headers-more-nginx-module-0.33 --add-module=../array-var-nginx-module-0.05 --add-module=../memc-nginx-module-0.19 --add-module=../redis2-nginx-module-0.15 --add-module=../redis-nginx-module-0.3.7 --add-module=../rds-json-nginx-module-0.15 --add-module=../rds-csv-nginx-module-0.09 --add-module=../ngx_stream_lua-0.0.7 --with-ld-opt=-Wl,-rpath,/usr/local/openresty/luajit/lib --add-dynamic-module=/data/openresty-1.15.8.1/../nginx-upsync-module-2.1.0 --add-module=/data/openresty-1.15.8.1/../naxsi/naxsi_src --add-dynamic-module=/data/openresty-1.15.8.1/../nginx-module-vts --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_ssl_module


<2>把configure那行编译参数复制并排列
(方便查看)

cat 1.txt |awk '{for(i=1;i<=NF;++i) print $i}'  > configure_old.txt
--prefix=/usr/local/openresty/nginx
--with-cc-opt=-O2
--add-module=../ngx_devel_kit-0.3.1rc1
--add-module=../echo-nginx-module-0.61
--add-module=../xss-nginx-module-0.06
--add-module=../ngx_coolkit-0.2
--add-module=../set-misc-nginx-module-0.32
--add-module=../form-input-nginx-module-0.12
--add-module=../encrypted-session-nginx-module-0.08
--add-module=../srcache-nginx-module-0.31
--add-module=../ngx_lua-0.10.15
--add-module=../ngx_lua_upstream-0.07
--add-module=../headers-more-nginx-module-0.33
--add-module=../array-var-nginx-module-0.05
--add-module=../memc-nginx-module-0.19
--add-module=../redis2-nginx-module-0.15
--add-module=../redis-nginx-module-0.3.7
--add-module=../rds-json-nginx-module-0.15
--add-module=../rds-csv-nginx-module-0.09
--add-module=../ngx_stream_lua-0.0.7
--with-ld-opt=-Wl,-rpath,/usr/local/openresty/luajit/lib
--add-dynamic-module=/data/openresty-1.15.8.1/../nginx-upsync-module-2.1.0
--add-module=/data/openresty-1.15.8.1/../naxsi/naxsi_src
--add-dynamic-module=/data/openresty-1.15.8.1/../nginx-module-vts
--with-stream
--with-stream_ssl_module
--with-stream_ssl_preread_module
--with-http_ssl_module


OpenResty是一个基于nginx的可伸缩的 Web 平台,它里面集成了lua和一些其他模块,开发人员可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,因此它本身是有一些默认的编译参数,编译时./configure即可,其中 默认模块 的参数 编译时无需添加, 而非默认的参数(自己添加的模块)得在编译时加上

排除下面这3条,其他的都是openresty默认编译参数
我们需要在重新编译时把对应的包下载下来,并在编译时添加,否则缺少模块,导致新编译后的nginx启动后,原来的服务出现问题

--add-dynamic-module=/data/openresty-1.15.8.1/../nginx-upsync-module-2.1.0     #Nginx实现动态配置的模块,通过拉取 Consul 或 etcd (及其它)的上游数据,实现无需重新加载 Nginx ,动态修改后端服务器属性
--add-module=/data/openresty-1.15.8.1/../naxsi/naxsi_src                       #naxsi模块,可构建WAF,防xss、防注入攻击
--add-dynamic-module=/data/openresty-1.15.8.1/../nginx-module-vts              #Nginx的监控模块,能够提供json、html、prometheus格式的数据产出


注意:
关于这些模块的安装包,编译后不要轻易删除,下载比较麻烦,避免以后再编译没安装包



<3>查看是否支持要新加的模块
(进入openresty的源码包执行)

./configure --help | grep http_gzip_static_module
./configure --help | grep with-http_flv_module
./configure --help | grep with-http_stub_status_module

为避免以后再次编译,把可能需要的模块也添加上



<4>重新编译

./configure  --add-dynamic-module=/data/openresty-1.15.8.1/../nginx-upsync-module-2.1.0 --add-module=/data/openresty-1.15.8.1/../naxsi/naxsi_src --add-dynamic-module=/data/openresty-1.15.8.1/../nginx-module-vts  --with-http_gzip_static_module --with-http_flv_module --with-http_stub_status_module

编译成功后:
gmake

#由于该文档中的操作是添加模块,原来已经有openresty配置文件了.不可install
#gmake install

注意:
如果配置–prefix,该目录必须和原来nginx的编译参数中的目录相同



<5> 拷贝新nginx到目录

cd openresty-1.15.8.1/build/nginx-1.19.3/objs/nginx
cp nginx /usr/local/openresty/nginx/sbin/nginx_xin


<6>检测并对比nginx编译参数

cd /usr/local/openresty/nginx/sbin/
./nginx -t
./nginx_xin -t

./nginx -V
./nginx_xin -V

查看prefix的目录是否一致,新nginx是否缺少旧nginx中的参数


<7>nginx重启

如前面的测试都是成功的,可以重启nginx
(如果有大量业务不建议直接重启,操作选择访问人数不多的时候)

nginx -s stop
mv nginx nginx_old
mv nginx_xin nginx
./nginx 

也可像nginx平滑升级一样,重启nginx,参考链接:
https://blog.csdn.net/GX_1_11_real/article/details/85922283 第七项




nginx gzip 的配置

gzip on;                #开启和关闭gzip模式
gzip_min_length 1k;     #gizp压缩起点,文件大于1k才进行压缩
gzip_buffers 4 16k;     #设置压缩所需要的缓冲区大小,以4k为单位,如果文件为7k则申请2*4k的缓冲区
gzip_http_version 1.1;  #设置gzip压缩针对的HTTP协议版本
gzip_comp_level 2;      #设置gzip的压缩比, 1-9 数字越大压缩的越好,也越占用CPU时间(1压缩比最小但最快 9相反)
gzip_types text/plain application/x-javascript text/css application/xml application/json application/javascript text/xml text/javascript image/jpeg image/gif image/png;     #进行压缩的文件类型
gzip_proxied any;       #无论后端服务器的headers头返回什么信息,都无条件启用压缩
gzip_vary on;           #是否在http header中添加Vary: Accept-Encoding,建议开启
gzip_disable "MSIE [1-6].";     #禁用IE6的gzip压缩,指定哪些不需要gzip压缩的浏览器(将和User-Agents进行匹配),依赖于PCRE库


验证配置正常再重新加载

/usr/local/openresty/nginx/sbin/nginx -t
/usr/local/openresty/nginx/sbin/nginx -s reload
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/422756.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号