Temos o prazer de anunciar que o NGINX Plus Release 13 (R13) agora está disponível como uma atualização gratuita para todos os assinantes do NGINX Plus. O NGINX Plus é um servidor web combinado, balanceador de carga e cache de conteúdo criado com base no NGINX Open Source. O NGINX Plus R13 inclui novos recursos focados em implantações dinâmicas, recursos de depuração aprimorados e segurança e desempenho aprimorados.
O NGINX Plus R13 apresenta suporte para:
njs
fornece um console que mostra todos os objetos internos para JavaScript. Esses objetos podem ser investigados mais detalhadamente para expor os métodos e primitivos disponíveis para cada objeto. Outras melhorias incluem melhorias no método de aprendizado persistente para persistência de sessão, suporte a trailers HTTP e um novo módulo dinâmico de terceiros para substituições HTTP.
sticky_cookie_insert
foi removida no NGINX Plus R13, tendo sido descontinuada no NGINX Plus R2.Diretiva no módulo ModSecurity não é mais suportada – A diretiva SecRequestBodyInMemoryLimit
para ModSecurity não é mais suportada. Os clientes podem remover esta diretiva com segurança, porque o módulo ModSecurity obedece ao tratamento do corpo da solicitação definido pela configuração do NGINX.
[ Editor – O módulo NGINX ModSecurity WAF para NGINX Plus foi oficialmente encerrado em 1º de abril de 2022 e está em transição para o fim da vida útil em 31 de março de 2024 . Para mais detalhes, veja F5 NGINX ModSecurity WAF está em transição para o fim da vida útil<.htmla> em nosso blog.]
O NGINX Plus R13 inclui uma nova API REST unificada em um único ponto de extremidade. Versões anteriores do NGINX Plus incluíam APIs Upstream Conf e Extended Status separadas. A nova API combina a funcionalidade de ambos e também oferece suporte ao novo módulo Key-Value Store em uma variedade de casos de uso para configuração dinâmica (discutido na seção Key-Value Store abaixo).
Para habilitar a API NGINX Plus , inclua a nova diretiva api
em um bloco de localização
:
server { listen 80;
location /api {
api write=on;
# diretivas que permitem acesso somente a usuários autorizados
}
}
Por padrão, a API NGINX Plus fornece acesso somente leitura aos dados. Adicione o parâmetro write=on
à diretiva api
para habilitar o acesso de leitura/gravação para que alterações possam ser feitas nos servidores upstream e no novo módulo Key-Value Store . Recomendamos fortemente restringir o acesso à API somente a usuários autorizados, especialmente quando o modo de leitura/gravação estiver ativado.
Para ver todos os tipos de informações disponíveis no ponto de extremidade da API, execute este comando:
$ curl http://localhost:80/api/1/ ["nginx","processos","conexões","ssl","slabs","http","stream"]
Para exibir detalhes sobre um tipo específico de informação, anexe a string apropriada ao URI da solicitação:
conexões
– Exibir métricas para conexões totaishttp
– Exibir métricas para tráfego HTTP e modificar a configuração upstream HTTP
Existem também dois “subtipos” em http
:
http/server_zones
– Exibe informações sobre servidores virtuais HTTPhttp/upstreams
– Exibe informações sobre grupos de servidores HTTP upstream e modifica sua configuraçãonginx
– Exibir informações gerais sobre o NGINXprocessos
– Exibir informações sobre processos de trabalho do NGINXslabs
– Exibe informações sobre a memória compartilhada alocada pelo NGINXssl
– Exibir métricas para clientes SSL/TLS em tempo realstream
– Exibir métricas para tráfego TCP/UDP e modificar a configuração de grupos de servidores upstream TCP/UDP (em stream/upstreams
)O NGINX Plus relata mais de 40 métricas exclusivas além do que está disponível no NGINX Open Source. Agora você pode acessar essas métricas usando a NGINX Plus API . Use a API para acessar as métricas importantes para você.
Como exemplo, anexe conexões
ao URI para gerar um instantâneo do status da conexão, que inclui o número de conexões de clientes aceitas, ativas, descartadas e ociosas.
$ curl http://localhost:80/api/1/connections {"aceito":3,"rejeitado":0,"ativo":1,"ocioso":0}
Outro exemplo: anexe ssl
ao URI para gerar um instantâneo das estatísticas do cliente SSL em tempo real.
$ curl http://localhost:80/api/1/ssl {"apertos de mão":0,"apertos_de_mão_falharam":0,"reutilizações_de_sessão":0}
No NGINX Plus R12 e versões anteriores, você podia usar a diretiva upstream_conf
para habilitar a configuração dinâmica de grupos de servidores upstream existentes sem recarregar o NGINX Plus. Essa funcionalidade agora está incorporada à API NGINX Plus .
Este snippet de configuração do NGINX Plus define dois servidores no grupo upstream chamado backend e habilita a API do NGINX Plus em /api :
upstream backend { zona backends 64k;
servidor 10.10.10.2;
servidor 10.10.10.4;
}
servidor {
listen 80;
server_name www.example.org;
localização /api {
api write=on;
}
}
Para adicionar um servidor ao grupo de backend , inclua a opção -d
em uma solicitação curl
para /api/1/http/upstreams/backend/servers , com texto JSON que define o endereço IP do novo servidor (aqui, 10.10.10.6). A opção -i
significa que os cabeçalhos HTTP são incluídos na resposta. (Você pode omitir -X POST
porque esse é o método padrão com -d
, mas o incluímos para consistência com outros métodos.)
$ curl -iX POST -d '{"server":"10.10.10.6"}' http://localhost/api/1/http/upstreams/backend/servers HTTP/1.1 201 Criado ...
Para obter detalhes sobre todas as opções de configuração de grupos upstream, consulte a documentação de referência do módulo NGINX Plus API .
O NGINX Plus R13 apresenta um novo módulo Key-Value Store . Você pode usar a API NGINX Plus para criar, modificar e remover pares de chave-valor em tempo real em uma ou mais zonas de memória compartilhada “keyval”. O valor de cada par de chave-valor pode então ser avaliado como uma variável para uso por outros recursos do NGINX Plus.
Para adicionar, modificar, ler e excluir entradas no armazenamento de chave-valor, use os métodos HTTP POST
, PATCH
, GET
e DELETE
, respectivamente. O armazenamento de chave-valor fornece uma variedade de soluções de configuração dinâmica para permitir a integração em tempo real com sistemas externos.
Exemplos de casos de uso incluem:
O snippet de configuração a seguir usa o módulo Key-Value Store para gerenciar URLs personalizadas para um site.
keyval_zone zone=redirects:1M state=state/redirects.json; # Salvar pares de chave-val no arquivokeyval $uri $target zone=redirects; # $uri é a chave, $target é o valor
server {
listen 80;
location /api {
api write=on; # Habilitar a API NGINX Plus (proteger este local em ambientes de produção)
}
if ($target) { # Verdadeiro quando $uri existe na zona de chave-val 'redirects'
return 301 $target; # Redirecionar o cliente para o valor correspondente para $uri
}
location / {
proxy_pass http://backend;
}
}
Na diretiva keyval
, a chave é definida como o URI da máquina remota que emite a solicitação HTTP. Se $uri
for uma chave no armazenamento de chave-valor, o valor associado à chave será atribuído a uma nova variável chamada $target
. Então, se $target
existir, o NGINX Plus redireciona o cliente para o valor correspondente de $uri
.
Para preencher o armazenamento de chave-valor com uma URL personalizada inicial, enviamos os dados, codificados como JSON, para o URI da API NGINX Plus .
$ curl -iX POST -d '{"/conf":"/conf2017"}' http://localhost/api/1/http/keyvals/redirects HTTP/1.1 201 Criado ...
Agora os clientes que solicitam /conf são redirecionados para /conf2017 .
$ curl -i http://localhost/conf HTTP/1.1 301 Movido temporariamente Localização: http://localhost/conf2017
Você pode usar o método PATCH
para adicionar mais redirecionamentos de URL personalizados ao armazenamento de chave-valor e modificar entradas existentes dinamicamente.
$ curl -iX PATCH -d '{"/conf":"/conf2018"}' http://localhost/api/1/http/keyvals/redirects HTTP/1.1 204 Nenhum conteúdo ...
Você pode configurar vários armazenamentos de chave-valor separados usando a diretiva keyval
para definir uma zona de memória compartilhada diferente para cada um. Para obter mais informações, consulte a documentação de referência do módulo Key-Value Store .
A nova API NGINX Plus vem com uma especificação Swagger que pode ser usada para explorar a API e entender os recursos de cada recurso. A documentação do Swagger está incluída no NGINX Plus e pode ser acessada em http:// nginx-host /swagger-ui/ .
A parte interativa da interface do usuário do Swagger requer que a API NGINX Plus esteja habilitada, o que pode ser feito descomentando o bloco de localização /api/ no arquivo conf.d/default.conf .
# habilitar /api/ localização com controle de acesso apropriado para# fazer uso da API NGINX Plus
#
#localização /api/ {
# api write=on;
# permitir 127.0.0.1;
# negar tudo;
#}
Você também pode explorar a documentação da API do NGINX Plus em https://demo.nginx.com/swagger-ui/ .
Observação: Toda a API do NGINX Plus , incluindo as métricas de status estendidas, a configuração upstream e o novo módulo Key-Value Store, é exclusiva do NGINX Plus.
Com o NGINX Plus R13, você pode habilitar o espelhamento de solicitações HTTP. Com esse recurso, as solicitações HTTP que são enviadas por proxy para um grupo upstream são clonadas e também enviadas para um destino diferente. A solicitação original é processada normalmente, mas quaisquer respostas da solicitação clonada são ignoradas. Há muitos casos de uso para espelhamento de solicitações, incluindo:
Habilitar o espelhamento de solicitações tem impacto insignificante no desempenho e na produtividade geral do sistema. O snippet de configuração a seguir mostra como usar a nova diretiva mirror
para clonar solicitações e passá-las para um servidor upstream separado.
localização / { espelho /espelho;
proxy_pass http://backend;
}
localização /espelho {
interno;
proxy_pass http://test_backend$request_uri;
}
As solicitações são enviadas por proxy para o grupo upstream de backend
para processamento regular. Eles também são clonados e enviados por proxy para um grupo upstream separado chamado test_backend , mantendo o URI da solicitação original.
Observação: O espelhamento de solicitações foi lançado inicialmente no NGINX Open Source 1.13.4.
Desde que se tornou disponível ao público no NGINX Plus R12 , o módulo NGINX JavaScript (anteriormente chamado de nginScript) continua sendo estendido com suporte à linguagem JavaScript principal. Com esta versão, introduzimos suporte para números hexadecimais (como 0x7b) e notação científica (como 512e10). Métodos primitivos para a classe Object
também foram implementados.
O NGINX JavaScript agora também oferece um shell interativo, invocado com o comando njs
, para auxiliar no desenvolvimento do código NGINX JavaScript.
O seguinte snippet de shell mostra como entrar no shell interativo JavaScript do NGINX, definir uma expressão que produz uma data aleatória de até 30 segundos no futuro e calcular a soma de dois números.
$ njs interativo njscript >> Data.now() + Math.round(Math.random()*30*1000); 1500976350968 >> 0x7b + 512e10; 5120000000123 >>
Para saber mais, veja a introdução ao NGINX JavaScript<.htmla> em nosso blog.
Observação: O NGINX JavaScript está disponível para o NGINX Open Source e o NGINX Plus.
O NGINX 1.11.5 e o NGINX Plus R11 introduziram suporte para compilar módulos dinâmicos independentemente do próprio NGINX. Isso permite que os usuários do NGINX e do NGINX Plus usem as compilações oficiais dos repositórios da NGINX, Inc. e carreguem apenas os módulos dinâmicos necessários.
Com o NGINX Plus R13, fornecemos uma ferramenta de construção para compilar e empacotar um módulo dinâmico como um módulo instalável que preserva e respeita a dependência entre ele e a versão base do NGINX à qual está vinculado.
Para obter detalhes completos sobre a ferramenta de compilação, consulte Criando pacotes instaláveis para módulos dinâmicos em nosso blog.
Observação: A ferramenta de construção está disponível para NGINX Open Source e NGINX Plus.
A persistência de sessão é um recurso muito útil do balanceamento de carga do NGINX Plus que permite enviar todas as solicitações de um cliente específico para um servidor. Existem várias maneiras de estabelecer a persistência da sessão; com o método “sticky learn”, o NGINX Plus procura a presença de um cookie específico e fixa o cliente ao mesmo servidor sempre que esse cookie for incluído em uma solicitação.
Com o NGINX Plus R13, agora você pode estabelecer uma sessão persistente assim que o servidor upstream enviar os cabeçalhos de sua resposta, em vez de esperar até que a carga de resposta completa chegue. O NGINX Plus pode, portanto, enviar a sessão persistente ao cliente o mais rápido possível. Inclua o novo parâmetro de cabeçalho
na diretiva sticky
learn
:
backends upstream { zona backends 64k;
servidor 10.10.10.2;
servidor 10.10.10.4;
sticky learn create=$upstream_cookie_sessionid
lookup=$cookie_sessionid
zona=client_sessions:1m
cabeçalho;
}
O parâmetro de cabeçalho
é particularmente útil se um aplicativo for propenso a erros e você quiser que o cliente reenvie solicitações com falha para o mesmo servidor upstream.
Observação: A persistência da sessão Sticky-Learn é exclusiva do NGINX Plus.
O NGINX Plus R13 apresenta os seguintes recursos adicionais:
add_trailer
permite que trailers arbitrários sejam adicionados ao final das respostas HTTP. O cabeçalho de resposta do trailer permite que o remetente inclua campos adicionais no final de mensagens fragmentadas para fornecer metadados que podem ser gerados dinamicamente enquanto o corpo da mensagem é enviado, como uma verificação de integridade da mensagem ou uma assinatura digital.worker_shutdown_timeout
para definir um tempo limite que permita o desligamento normal dos processos do trabalhador para que sejam concluídos mais rapidamente. Quando o tempo limite expira após um sinal de desligamento ou reinicialização ser recebido, o NGINX Plus tenta fechar todas as conexões de cliente abertas.Se você estiver executando o NGINX Plus, recomendamos fortemente que atualize para a versão 13 o mais rápido possível. Você aprenderá uma série de correções e melhorias, e isso nos ajudará a ajudar você caso precise abrir um tíquete de suporte. Instruções de instalação e atualização podem ser encontradas no portal do cliente .
Revise cuidadosamente os novos recursos e mudanças de comportamento descritos nesta postagem do blog antes de prosseguir com a atualização.
Se você ainda não experimentou o NGINX Plus , recomendamos que experimente para aceleração web, balanceamento de carga e entrega de aplicativos, ou como um servidor web totalmente suportado com APIs aprimoradas de monitoramento e gerenciamento. Você pode começar hoje mesmo gratuitamente com uma avaliação de 30 dias e ver por si mesmo como o NGINX Plus pode ajudar você a entregar e dimensionar seus aplicativos.
"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."