方法 1 : 使用 openrestry

安装地址 : http://openresty.org/en/installation.html

  1. $ brew install openresty/brew/openresty

如果是 nginx 也安装了, 可以停掉 nginx , 将配置文件复制到 openresty 文件夹 /usr/local/etc/openresty , 启动 openresty 即可运行

  1. $ brew services stop nginx
  2. $ brew services start openresty/brew/openresty

编译 echo module 并加载(失败)

!!! 此方法不能使用, 仅仅作为记录

解压源文件
Nginx 目录 : /usr/local/share/nginx/src
包含的文件列表

  1. -rw-r--r-- 1 duoli staff 1.4K 8 11 22:52 configure_args.txt
  2. -rw-r--r-- 1 duoli staff 658K 8 11 22:52 src.tar.xz

解压 源文件

  1. $ xz -dk src.tar.xz
  2. $ tar -zxvf src.tar

查看编译参数

  1. $ cat configure_args.txt
  2. ...
  3. --sbin-path=/usr/local/Cellar/nginx/1.19.2/bin/nginx
  4. ...

下载 echo module
当前目录: /usr/local/share/nginx/src/

  1. $ mkdir modules
  2. $ cd modules
  3. $ git clone https://github.com/openresty/echo-nginx-module

我们编译的基础之上在加上 echo 目录, 由于无需覆盖, 所以这里修改 nginx 的文件目录 --sbin-path=/usr/local/Cellar/nginx/1.19.2/bin/nginx-echo
这里增加编译参数 --with-echo-module=/usr/local/share/nginx/src/modules/echo-nginx-module
这里使用 echo 官方使用动态模块加入:
https://github.com/openresty/echo-nginx-module#installation

  1. $ ./configure --prefix=/usr/local/Cellar/nginx/1.19.2 \
  2. --add-dynamic-module=/usr/local/share/nginx/src/modules/echo-nginx-module \
  3. --with-cc-opt='-DNGX_HTTP_HEADERS' $(nginx -V)
  4. checking for OS
  5. + Darwin 19.6.0 x86_64
  6. checking for C compiler ... found
  7. + using Clang C compiler
  8. + clang version: 11.0.3 (clang-1103.0.32.62)
  9. ...
  10. ...
  11. creating objs/Makefile
  12. Configuration summary
  13. + using system PCRE library
  14. + OpenSSL library is not used
  15. + using system zlib library
  16. nginx path prefix: "/usr/local/Cellar/nginx/1.19.2"
  17. nginx binary file: "/usr/local/Cellar/nginx/1.19.2/sbin/nginx"
  18. nginx modules path: "/usr/local/Cellar/nginx/1.19.2/modules"
  19. ...
  20. $ make -j2
  21. $ make install

这样存在动态模块 /usr/local/Cellar/nginx/1.19.2/modules

  1. $ ll
  2. -rwxr-xr-x 1 duoli staff 49K 8 25 17:08 ngx_http_echo_module.so

nginx 配置加载动态模块
但是这样加载的模块出现 不兼容

  1. nginx: [emerg] module "/usr/local/Cellar/nginx/1.19.2/modules/ngx_http_echo_module.so" is not binary compatible in /usr/local/etc/nginx/nginx.conf:11

原因可能是版本不兼容: https://github.com/openresty/echo-nginx-module#compatibility