为已经安装好的nginx动态添加新模块echo-nginx-module

环境说明

  1. 我的 nginx 的安装目录在 /usr/local/nginx 文件夹,同时 ./sbin/nginx 已经被我添加到了系统路径,不论在任何目录下我都可以直接 nginx 调用。
  2. 我的 nginx 通过在官方下载 .tar.gz 的源码包编译安装完成,使用的是 1.16.1 版本,解压后的 nginx-1.16.1 文件夹还在 nginx 的安装目录下放着。
  3. 在 nginx 安装目录下新建了 modules 文件夹,用来放想要添加的动态模块。

获取echo-nginx-module模块

进入 /usr/local/nginx/modulesgit clone https://github.com/openresty/echo-nginx-module.git,将模块的内容下载到echo-nginx-module文件夹中/usr/local/nginx/modules/echo-nginx-module/

重新make nginx-1.16.1

进入 /usr/local/nginx/nginx-1.16.1 这里的nginx-1.16.1目录一般 nginx 安装目录是没有的,我这里会有的原因请见”环境说明“节。

运行./configure --add-module=/usr/local/nginx/modules/echo-nginx-module/

再运行make,但绝对不能make install

用新版nginx替换旧版

备份正在运行的 nginx 的nginx文件:cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

用新 make 出的 nginx 文件将其替换:
rm -f /usr/local/nginx/sbin/nginx
cp /usr/local/nginx/nginx-1.16.1/objs/nginx /usr/local/nginx/sbin/

此时再在/usr/local/nginx/目录下 ./nginx -V,应该能看到一个--add-module=...的内容,我的 nginx -V结果如下:
configure arguments: --with-http_ssl_module --add-module=/usr/local/nginx/modules/echo-nginx-module --with-openssl=/usr/local/ssl
其中有 --add-module=/usr/local/nginx/modules/echo-nginx-module 说明已经成功了

echo-nginx-module 使用

使用echo-nginx-module探寻nginx的rewrite模块的break和last差异