Hoje lançamos o NGINX versão 1.9.11 de código aberto, com um novo recurso que acreditamos que terá um grande impacto em como você usa o NGINX e o NGINX Plus : módulos dinâmicos . Com módulos dinâmicos, você pode opcionalmente carregar arquivos de objetos compartilhados separados em tempo de execução como módulos – tanto módulos de terceiros quanto alguns módulos NGINX nativos. A nova implementação mantém a compatibilidade com a API do módulo o máximo possível.
Editor – No NGINX 1.11.5 e posteriores (e NGINX Plus R11 e posteriores), você pode compilar módulos dinâmicos sem compilar também o binário NGINX completo. Para obter instruções, consulte Compilando módulos dinâmicos para NGINX Plus .
A próxima versão do NGINX Plus (NGINX Plus R9) se baseará nesse recurso de módulos dinâmicos. Planejamos estabelecer um repositório de módulos NGINX gerenciados com uma variedade de módulos de terceiros que testamos e certificamos em relação ao NGINX Plus, tornando mais fácil para você adicionar extensões comuns ao NGINX Plus com confiança. Se você quiser que seus módulos comerciais ou de código aberto sejam incluídos em nosso repositório, entre em contato conosco pelo link Contato de vendas .
Até agora, se você quisesse criar um módulo para o NGINX, você tinha que compilá-lo em um binário NGINX junto com o código-fonte do NGINX. O módulo era carregado com o NGINX todas as vezes, quer você quisesse ou não. Para os empacotadores de distribuições de sistemas operacionais, isso tornou muito difícil criar binários NGINX personalizados para cada usuário.
Na primeira versão dos módulos dinâmicos, você ainda precisa compilar os módulos NGINX opcionais ao mesmo tempo que o binário NGINX, mas também cria um objeto compartilhado separado para cada módulo carregado dinamicamente e usa uma diretiva no arquivo de configuração NGINX para habilitar e desabilitar o carregamento do objeto compartilhado em tempo de execução.
Na primeira versão, os seguintes módulos e pacotes de módulos NGINX podem ser criados dinamicamente:
ngx_http_geoip_module
)ngx_http_image_filter_module
)ngx_mail_{ core , auth , imap , pop3 , proxy , smtp , ssl }_module
)ngx_stream_{ core , access , limit_conn , proxy , ssl , upstream }_module
)ngx_http_xslt_module
)Para gerar objetos compartilhados carregáveis dinamicamente, anexe =dynamic
ao argumento padrão --with_ module
:
# ./configure --with-http_geoip_module=dinâmico --with-http_image_filter_module=dinâmico --with-mail=dinâmico --with-stream=dinâmico --with-http_xslt_module=dinâmico
Ao instalar o código-fonte do NGINX 1.9.11, há um novo subdiretório chamado modules , e o processo de compilação coloca os objetos binários compartilhados lá. Por padrão, o caminho é /usr/local/nginx/modules .
Para carregar um módulo em tempo de execução, inclua a nova diretiva load_module
no contexto principal, especificando o caminho para o arquivo de objeto compartilhado do módulo, entre aspas. Quando você recarrega a configuração ou reinicia o NGINX, o módulo dinâmico é carregado. Você pode especificar um caminho relativo ao diretório de origem, como nestes exemplos, ou um caminho completo.
load_module "módulos/ngx_http_geoip_module.so";load_module "módulos/ngx_stream_module.so";
Para “descarregar” dinamicamente um módulo, comente ou remova sua diretiva load_module
e recarregue a configuração do NGINX. Se quaisquer outras diretivas no arquivo estiverem relacionadas ao módulo que você está descarregando, lembre-se de comentá-las ou removê-las também.
Para desenvolvedores de muitos módulos tradicionais de terceiros, a conversão para carregamento dinâmico requer muito pouco trabalho. Em muitos casos, você só precisa editar o arquivo de configuração do código-fonte do seu módulo. Outros módulos precisarão de um pouco mais de trabalho. O NGINX Wiki inclui um Guia de Conversão de Módulos e informações detalhadas sobre o formato do arquivo de configuração de origem do módulo .
Para compilar um módulo de terceiros que foi convertido, use o novo argumento --add-dynamic-module
e especifique o caminho:
# ./configure --add-dynamic-module= /caminho/para/o/módulo/fonte
Assim como acontece com os módulos NGINX, um objeto compartilhado é criado e instalado no subdiretório de módulos , e você adiciona uma diretiva load_module
para ele na configuração do NGINX. Nossa equipe de relações com desenvolvedores está disponível para ajudar na conversão de um módulo. Entre em contato conosco através da lista de discussão de desenvolvimento do NGINX .
Em versões futuras, planejamos adicionar a capacidade de compilar módulos após o binário NGINX ter sido compilado. Também estamos no processo de documentar a API do módulo e essa documentação estará disponível gratuitamente no NGINX Wiki quando concluída.
Para testar os módulos dinâmicos, baixe o NGINX 1.9.11 .
Para experimentar o NGINX Plus, comece hoje mesmo seu teste gratuito de 30 dias ou entre em contato conosco para discutir seus casos de uso.
"Esta postagem do blog pode fazer referência a produtos que não estão mais disponíveis e/ou não têm mais suporte. Para obter as informações mais atualizadas sobre os produtos e soluções F5 NGINX disponíveis, explore nossa família de produtos NGINX . O NGINX agora faz parte do F5. Todos os links anteriores do NGINX.com redirecionarão para conteúdo semelhante do NGINX no F5.com."