Nginx安装echo模块
2025-01-07 16:38:30

最近接到一个需求,要将到Nginx的请求体打印出来,做日志收集处理。echo-nginx-module模块可以满足需求。

环境

编译安装

获取包,相关包也可直接在浏览器下载。

1
2
3
4
5
wget http://nginx.org/download/nginx-1.24.0.tar.gz
tar -zxf nginx-1.24.0.tar.gz

wget https://github.com/openresty/echo-nginx-module/archive/refs/tags/v0.61.tar.gz
tar -zxf v0.61.tar.gz

编译,可能会缺少一些系统依赖,根据报错安装相关依赖。

进入Nginx目录进行编译前配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
cd nginx-1.24.0

# prefix 要安装的目录
# with 启用自带模块
# add-module 添加第三方模块 即echo的目录
./configure \
--prefix=/opt/module/nginx \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_sub_module \
--with-http_gzip_static_module \
--add-module=/opt/software/v0.61

进行configure时出现缺少依赖。


1
2
sudo yum groupinstall "Development Tools" -y
sudo yum install pcre pcre-devel -y

安装好依赖后再进行上面的配置,成功如图。

error 高亮只是软件的问题

编译安装,会安装到之前配置的目录。

1
2
make -j2
make install

在进行编译时(make -j2),出现缺少系统文件。是因为一开始使用1.12版本的Nginx,但是系统是CentOS9,所以选了一个更新的Nginx进行编译,解决该问题。

编译成功如图。

测试echo模块

nginx 添加如下配置。

1
2
3
4
5
location / {
echo_read_request_body;
echo "hello, nginx-echo!\n";
echo "$request_body";
}

发送请求测试。

1
curl localhost:80 -d "foo"

可以看到echo的输出,请求体也成功输出。