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
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, executenginx -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. 😜
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.
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! 🙌