Série Nginx #4: Instalando módulos de terceiros

Valdeir Psr
3 min readSep 17, 2021

--

Logo do Nginx. Image by https://kinsta.com/

Uhuu!! Chegamos em mais uma parte. 👊👊

Bem, os módulos no Nginx servem como uma extensão do servidor web. Eles podem ser instalados durante a compilação ou dinamicamente.

Os módulos trazem uma facilidade maior ao implementar e utilizar o Nginx. Podemos usar desde identificação do Estado até executar código PHP no próprio Nginx. A lista é graaaande.

Nesta postagem, aprenderemos a instalar módulos de terceiros. Este passo é importante para postagens futuras. Nelas utilizaremos vários módulos.

Observação: É importante que você saiba compilar o código fonte do Nginx. Caso não tenha esse conhecimento, acesse a postagem Série Nginx #2: Compilando o Nginx.

Vamos lá! 🏃

Verificando módulos instalados

Antes de instalar, nada mais justo que verificar se o módulo já está instalado, correto?

Para confirmar, basta executar o código abaixo:

# Verifica se o módulo foi instalado durante a compilação
nginx -V 2>&1 | grep --color geoip2

# Lista módulos dinâmicos
ls -lah /etc/nginx/modules-available

A pasta /etc/nginx/modules-available pode variar de acordo com sua configuração de compilação, método de instalação e/ou sistema operacional. Caso você não saiba qual é a pasta de módulos, execute nginx -V e verifique o valor da opção --module-path.

Se aparecer algum resultado, o módulo geoip2 está instalado. Caso contrário, vamos instalá-lo.🤲

Instalando módulos

Para começar, instalaremos o módulo GeoIP2 como exemplo.

Vamos começar clonando o projeto no diretório /tmp/geoip2

git clone --depth 1 \
https://github.com/leev/ngx_http_geoip2_module.git \
/tmp/geoip2

Prontinho!! Agora precisamos instalar a biblioteca libmaxminddb como pede a documentação do módulo.

Há duas formas de instalação: 1) Compilando; ou 2) Instalando via gerenciador de pacotes. Vamos escolher esta para facilitar as coisas. 😅

# Debian/Ubuntu
apt update;
apt install -y libmaxminddb-dev

# Alpine
apk update;
apk add --upgrade libmaxminddb-dev

Ótimo! Instalamos a biblioteca e já baixamos o módulo em /tmp/geoip2.

Vamos para o próximo passo. Don’t stop! ⏩

Compilando o módulo

Agora vamos navegar até a pasta do código fonte do Nginx.

Se você não viu essa parte, recomendo voltar à postagem Série Nginx #2: Compilando o Nginx.

cd ~/nginx-1.21.2 # No meu caso

Hora de configurar 🕒. Utilizaremos a flag --add-dynamic-module=<path> para informar a pasta onde baixamos o código fonte do módulo.

# Configura os diretórios e
# quais módulos o Nginx deverá instalar
./configure \
--with-compat \
--add-module=/tmp/geoip2

Caso você precise utilizar com proxies, utilize a flag --with-stream. O funcionamento depende de módulo para módulo.

Feito isso, vamos compilar o módulo.

make modules

Ótimo! Vamos enviar o módulo compilado para a pasta de módulos e carregá-lo nas configurações do Nginx.

# Carrega os módulos a pasta
cp objs/ngx_http_geoip2_module.so /etc/nginx/modules-available

Pronto! Tudo Instalado… 🎉💃
Mas… Verifique se o módulo realmente foi instalado. 😜

Resultado mostrando que o GeoIP2 foi instalado no momento da compilação do Nginx

Habilitando o módulo

Para habilitar um módulo, precisamos utilizar a diretiva load_module <path> no contexto main (principal).

echo "load_module modules-available/ngx_http_geoip2_module.so;" | \
sudo tee -a /etc/nginx/modules-enabled/geoip2.conf

O diretório do arquivo pode variar de acordo com sua configuração de compilação, método de instalação e/ou sistema operacional.

Reinicie o Nginx.

nginx -s reload

Testando o módulo

Não abordarei como configurar o módulo, que ficará para a próxima postagem, que será sobre segurança com Nginx.

Vídeo: https://asciinema.org/a/435128

Conclusão

É isso aí!!! Finalizamos mais uma parte. Nas próximas postagens, aprenderemos a configurar o GeoIP e a utilizar outros módulos.

Até breve! 🙌

--

--