在给nginx增加反代的时候抛出如下错误:nginx: [emerg] unknown directive "sub_filter"
检查后发现是没有安装http_sub_module 模块,此模板用于过滤/替换响应及一些内容
nginx模块的增加方式比较便捷,首先,nginx -V 查看当前nginx的编译参数
[root@something ~]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.6.0
built by gcc 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC)
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module
--with-http_ssl_module --with-http_gzip_static_module --with-ipv6
进到nginx安装源码目录,在老的编译参数中增加http_sub_module模块,并编译。
如果是第三方模块,则需要添加「—add-module=模块的源码路径」,这里以openresty的echo模板为样例(echo模块可以让nginx输出一些简单信息,方便调试)
[root@something nginx-1.6.0]# ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_sub_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --add-module=/home/z/ngx_openresty-1.7.2.1/build/echo-nginx-module-0.54
[root@something nginx-1.6.0]# make
只进行make,如果make install则所有文件被覆盖,导致conf丢失。
停止服务,备份老的nginx脚本,并用objs目下新的脚本替换掉老版本。
[root@something nginx-1.6.0]# cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
[root@something nginx-1.6.0]# cp ./objs/nginx /usr/local/nginx/sbin/nginx
启动服务… 查看新的编译参数
[root@something nginx-1.6.0]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.6.0
built by gcc 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC)
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module
--with-http_sub_module --with-http_ssl_module --with-http_gzip_static_module
--with-ipv6 --add-module=/home/z/ngx_openresty-1.7.2.1/build/echo-nginx-module-0.54
大功告成!