DEV Community

Cover image for Série Nginx #4: Instalando módulos de terceiros
Valdeir S.
Valdeir S.

Posted on • Updated on

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

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Ó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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Ó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
Enter fullscreen mode Exit fullscreen mode

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

Resultado do comando  raw `nginx -V 2>&1 | grep --color geoip2` endraw  mostra que o módulo foi instalado com sucesso.


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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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.


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! 🙌

Discussion (0)