Tutorial: como configurar o NGINX e o NGINX Plus como servidor web e proxy reverso na AWS

NGINX | 12 de novembro de 2021

Desde seu lançamento, há mais de 15 anos, o NGINX vem ganhando popularidade de forma constante e agora é o servidor web mais popular do mundo, atendendo a mais de [ngx_snippet name=’number-sites’] sites. Nesse caso, acreditamos que vale a pena seguir a maioria e usar o NGINX para todas as suas necessidades de serviços web, além de aproveitar seus recursos como proxy reverso, cache de conteúdo, balanceador de carga, gateway de API e muito mais.

Esta publicação do blog orienta você a instalar e executar o NGINX no Ubuntu 20.04 na Amazon Web Services (AWS), usando uma configuração simples que não afeta as configurações do seu computador pessoal. Ela aborda tanto o NGINX quanto o NGINX Plus, a versão com suporte comercial e recursos adicionais de nível empresarial.

Depois de concluir as etapas apresentadas aqui, você pode continuar com o treinamento NGINX Core (ministrado por instrutor ou sob demanda), um curso de um dia inteiro no qual você aprenderá a configurar, administrar e gerenciar o NGINX. O curso também prepara você para nossos outros cursos sobre tópicos avançados ministrados por instrutor ou no seu próprio ritmo.

O tutorial inclui instruções para estas tarefas:

Acessando um terminal

Para este tutorial, você precisa de um terminal para se conectar à sua instância do Amazon Elastic Compute Cloud (EC2). Os Macs têm um terminal integrado, mas os usuários do Windows precisam baixar o PuTTY ou uma ferramenta equivalente. Se preferir usar seu próprio terminal local para configurar o NGINX ou o NGINX Plus e disponibilizar conteúdo da Web, fique à vontade para pular para Configuração da AWS.

Acessando um terminal no macOS

Em Macs, você pode usar a ferramenta integrada terminal para fazer tudo o que é ensinado neste tutorial.

  1. Clique no ícone de lupa no canto direito da barra superior da tela.
  2. Digite terminal na caixa pop-up e pressione Enter. Uma janela separada do terminal será aberta.

Acessando um terminal no Windows

O Windows não vem com um terminal integrado, então você precisa baixar um da Internet. Assim como a AWS, recomendamos o PuTTY, um cliente ssh usado no mundo todo.

  1. Acesse a página de download do PuTTY.
  2. Baixe e instale o arquivo em um local de sua preferência e, em seguida, abra-o. No entanto, você só poderá acessar o terminal propriamente dito depois de concluir as etapas em Configuração da AWS.

Configurando a AWS

Neste tutorial, pressupomos que você tenha uma Amazon Virtual Private Cloud (VPC) e possa simplesmente usar a configuração padrão de VPC criada com a maioria das contas. Nesta seção, você configura sua implantação na AWS criando uma instância do EC2 e conectando-se a ela.

Observação: O procedimento e as capturas de tela a seguir para criar uma instância do EC2 foram verificados no momento da redação deste documento, mas estão sujeitos a alterações pela AWS. Adapte as instruções conforme necessário.

  1. Na página inicial da AWS, faça login no Console de Gerenciamento da AWS ou, se necessário, crie uma conta primeiro.
  2. Clique em Services na barra de título do Console e, em seguida, em EC2 na seção Compute.
    Captura de tela mostrando a seleção de “EC2” na página “Serviços” da AWS
  3. Clique no botão Launch Instance na página do painel do EC2 que será aberta.
  4. Na página Etapa 1, clique no botão Selecionar na linha Ubuntu Server 20.04 LTS (HVM), tipo de volume SSD e mantenha a seleção padrão da arquitetura de 64 bits (x86).
    Captura de tela da página "Etapa 1" do assistente de criação de instâncias do Amazon EC2
  5. Na página Etapa 2, selecione o tipo de instância t2.micro, que, no momento da redação deste artigo, está marcado como elegível para o nível gratuito e selecionado por padrão. Clique no botão Avançar: configurar detalhes da instância.
    Captura de tela da página “Etapa 2” do assistente de criação de instâncias do Amazon EC2
  6. Na página Etapa 3, verifique se a VPC que você deseja usar está selecionada no campo Rede e se o campo Atribuir IP público automaticamente está definido como a configuração padrão Usar configuração da sub-rede (Habilitar) ou como Habilitar. Mantenha as demais configurações com os valores padrão.
    Captura de tela da página “Etapa 3” do assistente de criação de instâncias do Amazon EC2
  7. Clique em 6. Configurar grupo de segurança na parte superior da página.
  8. Na página da Etapa 6, siga as etapas abaixo para permitir o tráfego HTTP e HTTPS de entrada (por padrão, as instâncias do EC2 aceitam apenas tráfego SSH):
    Captura de tela da página “Etapa 6” no assistente de criação de instâncias do Amazon EC2
    • Clique no botão Adicionar regra abaixo da tabela e selecione HTTP no menu suspenso da coluna Tipo. Para os fins deste tutorial, permitiremos o acesso de qualquer endereço IP (o valor na coluna Origem é Qualquer lugar 0.0.0.0/0, ::/0). Para ambientes de produção, recomendamos seguir o aviso exibido na página, que exige o uso de grupos de segurança para controlar o acesso.
    • Repita a etapa anterior para HTTPS.
    • Clique no botão Revisar e iniciar na parte inferior da página.
  9. Na página da Etapa 7, clique no botão Iniciar na parte inferior.
  10. Na caixa exibida, crie um novo par de chaves:
    Captura de tela da janela pop-up “Selecionar um par de chaves existente ou criar um novo par de chaves” do Amazon EC2
    • Selecione Criar um novo par de chaves no menu suspenso superior.
    • Selecione um tipo de par de chaves. Neste tutorial, selecionaremos RSA.
    • Digite um nome no campo Nome do par de chaves, como NGINX_key.
    • Clique no botão Baixar par de chaves.
    • Conforme mostrado na captura de tela animada abaixo, uma caixa de seleção substitui o botão Baixar par de chaves. Clique nela para indicar que você consegue acessar a chave privada.
    • Clique no botão Launch Instances.
  11. No seu gerenciador de arquivos, mova o arquivo .pem baixado (neste tutorial, NGINX_key.pem) para um local seguro. Neste tutorial, vamos colocá-lo no diretório /Desktop/NGINX.
  12. Se estiver usando um terminal do Windows, siga as instruções da AWS para baixar o utilitário PuTTYgen e converter o arquivo .pem em um arquivo .ppk.
  13. Na página Status da inicialização, clique no botão Exibir instâncias na parte inferior.
  14. Na página Instâncias que é aberta, a nova instância aparece na tabela. Dê um nome a ela:
    Captura de tela da página "Instâncias" do Amazon EC2 mostrando a edição do nome da instância
    • Clique no ícone de lápis na coluna Nome.
    • Digite o nome na caixa pop-up Editar nome e clique no botão Salvar.
  15. Clique no botão Conectar na parte superior da tela. Uma janela como a mostrada a seguir será exibida. Abra a guia do cliente SSH e siga as instruções para se conectar à instância. Se estiver usando o Windows, substitua .ppk por .pem nos comandos.
    Captura de tela da janela pop-up “Conectar à instância” do Amazon EC2

Instalação do software NGINX

Agora que seu ambiente da AWS está configurado, é hora de instalar o NGINX Open Source ou o NGINX Plus, que você pode experimentar gratuitamente por 30 dias. Ambas as opções funcionam no contexto deste tutorial, mas, se quiser explorar mais a fundo os recursos avançados do NGINX Plus, solicite uma avaliação gratuita.

Instalando o NGINX Open Source

A maioria das distribuições Linux e variantes do BSD disponibiliza o NGINX Open Source em seus repositórios de pacotes padrão, mas geralmente essa não é a versão mais recente. Recomendamos baixar o NGINX Open Source diretamente de nginx.org. São necessárias apenas algumas etapas adicionais para adicionar o repositório do NGINX ao gerenciador de pacotes do Ubuntu (apt).

Para instalar o NGINX Open Source, siga estas etapas:

  1. Acesse seu terminal.
  2. Baixe a chave de assinatura do NGINX:
$ sudo wget http://nginx.org/keys/nginx_signing.key
  1. Adicione a chave:
$ sudo apt-key add nginx_signing.key
  1. Acesse o diretório /etc/apt.
$ cd /etc/apt
  1. Edite o arquivo sources.list, adicionando este texto ao final:
deb http://nginx.org/packages/ubuntu focal nginx
deb-src http://nginx.org/packages/ubuntu focal nginx
  1. Observação: A palavra-chave focal em cada uma dessas linhas corresponde ao Ubuntu 20.04. Se você estiver usando uma versão diferente do Ubuntu, substitua-a pela primeira palavra do codinome da versão (por exemplo, bionic para o Ubuntu 18.04).
  2. Atualize o software NGINX:
$ sudo apt-get update
  1. Instale o NGINX:
$ sudo apt-get install nginx
  1. Digite Y quando solicitado.
  2. Inicie o NGINX:
$ sudo systemctl start nginx.service
  1. Verifique o status:
$ sudo systemctl status nginx.service
  1. Prossiga para Abrir sua página da web.

Instalando o NGINX Plus

  1. Se você ainda não tem o NGINX Plus, inscreva-se para uma avaliação gratuita de 30 dias.
  2. Quando você receber a notificação por e-mail informando que sua assinatura de avaliação está disponível, siga as instruções fornecidas para baixar seu certificado de segurança, sua chave privada e o JWT e, em seguida, instalar o NGINX Plus.
  3. Quando a instalação estiver concluída e o NGINX Plus estiver em execução, prossiga para Abrir sua página da Web.

Abrindo sua página da Web

Agora que você iniciou o software NGINX, confira a página da Web que o NGINX e o NGINX Plus disponibilizam por padrão antes de configurá-los para fornecer o conteúdo do seu site. Siga estas etapas:

  1. Acesse a guia Instâncias no painel do EC2, caso ainda não esteja nela. (Uma maneira de fazer isso é clicar em Serviços na barra de navegação superior do Console, em EC2 na seção Computação e em Instâncias na coluna de navegação à esquerda.)
  2. Role a tabela para a direita até visualizar o endereço IP público da instância na coluna Endereço IPv4 público (na captura de tela, é 3.22.51.xxx). Selecione o endereço e copie-o para a área de transferência.
    Captura de tela da página "Instâncias" do Amazon EC2 mostrando o campo "Endereço IPv4 público" de uma instância
  3. Abra uma nova guia do navegador e cole o endereço na barra de endereços. A página padrão Welcome to nginx! será exibida, indicando que o NGINX está instalado e em execução, mas ainda não foi configurado.
    A página de boas-vindas confirma que o proxy reverso e o servidor web NGINX estão em execução

Configurando arquivos de exemplo

Com uma versão funcional do NGINX ou do NGINX Plus instalada, é hora de colocá-la em prática! Comece configurando alguns arquivos e diretórios.

  1. Acesse seu diretório pessoal, caso ainda não esteja nele. Nas instruções a seguir, ele é /home/ubuntu.
  2. Crie um diretório chamado public_html e acesse-o.
  3. No diretório public_html, crie um arquivo chamado index.html e um diretório chamado application1.
  4. No diretório application1, crie um arquivo chamado app1.html e adicione algum texto a ele.
  5. Volte para o seu diretório pessoal.
  6. Crie um diretório chamado data.
  7. No diretório data, crie um diretório chamado images.

Disponibilizando páginas e imagens

Nosso primeiro caso de uso do NGINX ou NGINX Plus é disponibilizar páginas e imagens aos usuários por meio de uma página da Web.

  1. Acesse o diretório /etc/nginx/conf.d.
  2. Renomeie default.conf como default.conf.bak para impedir que o NGINX ou o NGINX Plus o use como arquivo de configuração padrão.
  3. Crie um arquivo chamado server1.conf com esta configuração:
server {    root /home/ubuntu/public_html;

    location /application1 {  }

    location /images {		
        root /home/ubuntu/data;	
    }
}
  1. Documentação das diretivas: location, root, server
  2. Acesse o diretório ~/data/images.
  3. Encontre uma imagem que você deseja disponibilizar e copie-a para o diretório (~/data/images). Como exemplo, o comando a seguir copia o logotipo do NGINX:
$ curl -o NGINX-logo.png https://www.nginx.com/wp-content/uploads/2021/11/NGINX-logo-2020.png
  1. Recarregue o NGINX ou o NGINX Plus:
$ sudo nginx -s reload
  1. Em um navegador da Web, solicite a imagem neste URL, em que NGINX-server é o endereço IP público da sua instância do EC2: https://NGINX-server/images/NGINX-logo.png
  2. Acesse também o aplicativo e observe o que é exibido: https://NGINX-server/application1/app1.html

Configurando um servidor proxy

Agora que você tem um servidor web funcionando, é hora de aprender a configurá-lo para encaminhar o tráfego. Esse recurso permite direcionar o tráfego para outros servidores e representa um passo importante para configurar o balanceamento de carga. Siga estas etapas:

  1. No diretório ~/data, crie um diretório chamado server2.
  2. No diretório server2, crie um diretório chamado sampleApp.
  3. No diretório sampleApp, crie um arquivo chamado index.html e adicione algum texto a ele.
  4. Acesse o diretório /etc/nginx/conf.d.
  5. Crie um arquivo chamado server2.conf com esta configuração:
server {    listen 8080;
    root /home/ubuntu/data/server2;
}
  1. Documentação das diretivas: listen, root, server
  2. Modifique o arquivo server1.conf adicionando uma diretiva proxy_pass no primeiro bloco location, da seguinte forma:
server {    root /home/ubuntu/public_html;

    location /application1 {
        proxy_pass http://localhost:8080/sampleApp;
    }

    location /images {
        root /home/ubuntu/data;
    }
}
  1. Documentação das diretivas: location, proxy_pass, root, server
  2. Recarregue o NGINX ou o NGINX Plus:
$ sudo nginx -s reload
  1. Acesse a seguinte URL no navegador e observe o que mudou em comparação com quando você a acessou em Disponibilização de páginas e imagens: https://NGINX-server/application1/index.html

E é isso! Agora você tem uma instância funcional do Ubuntu executando o NGINX, pronta para atuar como servidor proxy.

Para obter instruções sobre como implantar o NGINX e o NGINX Plus na AWS para outros casos de uso, consulte nossos guias de implantação.

Conclusão

Neste tutorial, você aprendeu a configurar o NGINX ou o NGINX Plus para disponibilizar arquivos e imagens pela Internet e atuar como proxy reverso. Se quiser conhecer o NGINX mais a fundo, oferecemos o curso de treinamento NGINX Core (ministrado por instrutor ou sob demanda), que aborda os tópicos deste tutorial, além de outros conceitos essenciais sobre serviços web e entrega de aplicações, incluindo balanceamento de carga, roteamento baseado em localização e segurança. Consulte também a documentação em nginx.org e o Guia de Administração do NGINX Plus – salvo indicação em contrário, os artigos se aplicam tanto ao NGINX Open Source quanto ao NGINX Plus.


Compartilhar

Publicações relacionadas no blog

Como o F5 NGINX One aprimora o gerenciamento e a observabilidade
NGINX | 10/10/2024

Como o F5 NGINX One aprimora o gerenciamento e a observabilidade

Descubra como o F5 NGINX One aprimora o gerenciamento e a observabilidade de ambientes híbridos e multicloud ao oferecer um console web centralizado baseado em SaaS, com insights em tempo real, conformidade automatizada e gerenciamento simplificado de configurações.

Do OpenAPI ao NGINX como gateway de API usando uma API declarativa
NGINX | 17/06/2024

Do OpenAPI ao NGINX como gateway de API usando uma API declarativa

Descubra como transformar uma definição de esquema OpenAPI em uma configuração NGINX totalmente funcional, operando como um API Gateway com a segurança de um Web Application Firewall e um Portal do Desenvolvedor, usando uma abordagem declarativa de API.

Como gerenciar picos repentinos de tráfego e sobrecarga do servidor
NGINX | 14/07/2021

Como gerenciar picos repentinos de tráfego e sobrecarga do servidor

Picos de tráfego e sobrecarga de servidores são preocupações sérias para varejistas online em qualquer época, mas especialmente durante a “Cyber Season” de compras de fim de ano. Detalhamos como você pode aproveitar as soluções de entrega de aplicações de nível de produção da NGINX para se preparar para aumentos repentinos de tráfego.

Distribuição segura de chaves privadas SSL com o NGINX
NGINX | 02/04/2019

Distribuição segura de chaves privadas SSL com o NGINX

Descrevemos três maneiras progressivamente mais seguras de proteger chaves privadas SSL ao configurar o NGINX para processar tráfego HTTPS: permitir acesso de leitura apenas ao usuário root, criptografar as chaves com senhas armazenadas separadamente e distribuir as senhas a partir de um repositório central.

Agrupando solicitações de API em lotes com NGINX Plus e o módulo JavaScript do NGINX
NGINX | 24/05/2018

Agrupando solicitações de API em lotes com NGINX Plus e o módulo JavaScript do NGINX

O módulo JavaScript do NGINX lançado com o NGINX Plus R15 oferece suporte a subsolicitações, possibilitando uma classe totalmente nova de casos de uso para o NGINX Plus. Este exemplo completo também usa a API do NGINX Plus e os módulos de chave-valor para converter solicitações de API dos clientes em solicitações separadas para as APIs dos microsserviços que compõem um aplicativo.

Como superar o esgotamento de portas efêmeras no NGINX e no NGINX Plus
NGINX | 19/04/2016

Como superar o esgotamento de portas efêmeras no NGINX e no NGINX Plus

Confira dicas para evitar o esgotamento de portas efêmeras com ajustes no kernel do Linux, conexões keepalive e conexões vinculadas dinamicamente a endereços IP locais.