Neste tutorial, explicarei como compilar um módulo externo para Nginx para adicionar funcionalidades adicionais ao servidor web.
Para ilustrar este tutorial, tomarei como exemplo o módulo http-headers-more-filter que permite modificar os cabeçalhos (ouvintes) enviados por solicitações HTTP.
Antes de começar, certifique-se de ter o compilador instalado:
sudo apt install gcc
O primeiro passo é verificar se o módulo está presente, digite o comando abaixo para verificar.
nginx -V 2>&1 | grep --color 'http-headers-more-filter'
Se o comando não retornar nada, o módulo não está presente.
Para compilar o módulo, precisaremos dos fontes Nginx, recupere a versão instalada usando o comando:
nginx -V

Como pode ser visto na imagem abaixo, o Nginx 1.21.0 está instalado.
Baixe os fontes da versão Nginx instalada, no exemplo usarei o seguinte comando:
wget https://nginx.org/download/nginx-1.21.0.tar.gz

Descompacte o arquivo usando o comando tar:
tar -xzvf nginx-1.21.0.tar.gz
Usando o comando ll, podemos ver que o arquivo está descompactado.

Agora você deve baixar as fontes do módulo. as fontes do módulo ouvintes-mais estão disponíveis aqui: openresty/headers-more-nginx-module: Set, add, and clear arbitrary output headers in NGINX http servers (github.com).
Clonamos o repositório usando o comando git:
git clone https://github.com/openresty/headers-more-nginx-module.git
Em seguida, liste para verificar se o repositório está clonado.

Dependendo dos módulos que você deseja, podem ser necessárias dependências, aqui você precisa instalar os seguintes pacotes:
- libpcre3-dev
- zlib1g
sudo apt install libpcre3-dev zlib1g
Vá para a pasta que contém as fontes do Nginx:
cd nginx-1.21.0
Agora vamos configurar a compilação do módulo utilizando o comando abaixo:
./configure --add-dynamic-module=../headers-more-nginx-module


Adapte o caminho do parâmetro –add-dynamic-module= que você deseja compilar.
Depois que a compilação estiver configurada, compile-a com o comando:
make modules

O módulo é compilado, o arquivo .so do módulo está localizado na pasta objs da pasta de origem Nginx.

Agora você deve mover o arquivo .so para a pasta /etc/nginx/modules. Depois que o arquivo for movido, você deve informar ao Nginx para carregar o módulo.
Abra o arquivo nginx.conf e adicione a instrução load_module.
load_module modules/ngx_http_header_more_filter_modules.so
Então reinicie o Nginx
sudo systemctl restart nginx
Agora você sabe compilar um módulo externo para Nginx.