Gerenciar Proxies e Virtual Hosts (VHosts) através de arquivos de configuração do NGINX pode se tornar tedioso à medida que o número de hosts virtuais e serviços web aumenta. Como você pode simplificar o processo? Com o NGINX Proxy Manager (NPM).
Continue lendo e aprenda a criar, gerenciar e proteger hosts virtuais com o console web do NGINX Proxy Manager.
Pré-requisitos
Este tutorial será uma demonstração prática. Se você deseja acompanhar, certifique-se de ter o seguinte:
- A Linux machine to host NGINX Proxy Manager and the proxied webserver- This tutorial uses Fedora 35.
- Docker para executar os containers – Este tutorial utiliza o Docker v20.10.12. Instale o Docker com este tutorial se você ainda não tiver uma das alternativas instaladas.
- Docker Compose para configurar o Proxy Manager e seus requisitos automaticamente. Este tutorial utiliza a versão 1.29.2 do Docker Compose. Instale o Docker Compose para prosseguir com o restante do artigo.
- O nome de domínio funciona como um ponto de extremidade de hospedagem virtual. Este tutorial usa um nome de domínio privado, testweb.com. Verifique se o nome de domínio aponta para a máquina host Linux. Você também pode usar um nome de domínio publicamente registrado.
- Você deve ter um certificado SSL e uma chave de certificado para garantir as hospedagens virtuais. Crie um certificado e seu arquivo de chave associado primeiro, se você ainda não tiver um.
Configurando o NGINX Proxy Manager
O NGINX Proxy Manager não é um pacote que você instala em seu sistema operacional. Em vez disso, o NPM é um aplicativo que você implanta no Docker – por isso, o Docker e o Docker Compose são os principais requisitos.
Siga as etapas abaixo para começar a configurar o seu NGINX Proxy Manager.
1. Faça login no seu servidor Linux via SSH ou no ambiente de desktop, se estiver presente.
2. Crie e abra um arquivo YAML chamado docker-compose.yml usando o seu editor de texto preferido, neste exemplo é usado o vi.
3. Copie e cole o código a seguir no editor. Este código contém as diretivas para baixar e configurar a imagem mais recente do nginx-proxy-manager. Salve e feche o arquivo para voltar à linha de comando.
4. Execute o comando docker-compose para iniciar o container em segundo plano (-d) de acordo com as diretivas especificadas.

5. Execute o seguinte comando para garantir que o container esteja em execução.
Você deverá ver um processo em execução correspondente ao container do proxy manager, como na captura de tela abaixo, se tudo estiver correto.

Acessando o Painel Administrativo
O NGINX Proxy Manager agora deve estar em execução. Agora você pode acessar o painel de administração do NPM para realizar a configuração inicial do usuário administrador.
1. Abra a janela do seu navegador e acesse http://<host_ip>:admin-ui-port>. Para maior comodidade, este tutorial utiliza o localhost implícito em vez de um endereço IP, ou seja, http://localhost:81, para acessar o painel de administração.
2. Faça login com as credenciais padrão iniciais do endereço de e-mail [email protected] e a senha changeme.

3. Modifique a conta de usuário padrão como desejar. Este tutorial mantém o Nome Completo e o Apelido e apenas altera o E-mail para [email protected]. Clique em Salvar para salvar os detalhes do usuário.

4. Digite uma nova senha para o usuário em Alterar Senha, conforme mostrado abaixo. Digite uma senha com oito ou mais caracteres e clique em Salvar.

Você deve ver as alterações feitas na conta do usuário abaixo.

Implantando o Servidor Web
Agora que você realizou a configuração inicial, seu próximo passo é iniciar um servidor web para seu host virtual. Siga as etapas desta seção para iniciar rapidamente um contêiner de serviço web Apache usando o Docker Compose.
Abra o arquivo docker-compose.yml que você criou anteriormente no seu editor de texto. Acrescente o seguinte trecho de código ao arquivo docker-compose.yml
A vantagem de usar o mesmo arquivo é que você modifica a rede do contêiner existente, adicionando um contêiner baseado em httpd registrado com o nome app2, em vez de em uma rede separada.
O conteúdo do arquivo deve parecer com a captura de tela abaixo. Salve o arquivo e saia do editor.

Execute o docker-compose
para iniciar o contêiner em segundo plano (-d
).
Você deve receber um feedback semelhante à captura de tela abaixo, confirmando a criação do segundo contêiner.

Criando um novo host virtual
Agora você tem um serviço web em execução. Esta seção tem como objetivo permitir o acesso ao servidor web por meio das portas publicadas do NGINX Proxy Manager.
1. Faça login no painel de administração do NGINX Proxy Manager.
2. Clique em Hosts —> Proxy Hosts.

3. Clique em Adicionar Proxy Host para iniciar a criação de um host virtual para o servidor web.

4. Preencha o formulário Novo Proxy Host com os seguintes detalhes para configurar o host virtual.
- Nome de domínio: Os nomes de domínio onde seu servidor web estará acessível. Este exemplo usa o domínio testweb.com.
- Esquema: O protocolo a ser usado ao acessar o servidor web. Deixe o valor padrão como
http
por enquanto.
- Nome do Host / IP Encaminhado: O nome do host ou endereço IP do servidor web. Como este tutorial utiliza o Docker Compose para configurar os contêineres, é suficiente utilizar
app2
. Digite o nome que você forneceu no arquivo docker-compose.yml.
- Porta Encaminhada: A porta na qual o servidor web escuta as solicitações. Neste caso, você usará a porta
80
, que é a porta padrão exposta para os contêineres do Apache httpd.
- Bloquear Explorações Comuns: Como uma vantagem, proxies configurados usando o NPM podem bloquear explorações comuns. Ative esta opção.
- Lista de Acesso: Listas pré-especificadas para controlar o acesso ao servidor web por trás de um proxy. Para este tutorial, deixe a escolha como Acesso Público para garantir que você possa acessar o servidor web através do proxy.
O formulário na sua tela deve corresponder à captura de tela abaixo. Clique em Salvar após preencher o formulário.

Agora você tem um host de proxy na lista.

5. Finalmente, acesse a URL do host virtual em uma nova aba ou janela do navegador. Para este tutorial, a URL é http://testweb.com. Se o host virtual estiver funcionando corretamente, você deverá ver a página inicial padrão.

Provisionamento de Certificados SSL
Você implantou o servidor web e confirmou que ele está em execução. Neste ponto, no entanto, o site ainda não possui um certificado SSL. Embora executar sites privados internos possa ser aceitável sem um certificado SSL, o mesmo não deve acontecer ao hospedar sites públicos.
Para garantir que as conexões do seu site sejam criptografadas, você instalará um certificado SSL no seu host virtual. Não se preocupe; você fará isso pelo NGINX Proxy Manager. Mas você já deve ter um certificado SSL no formato PEM e uma chave de certificado existente como requisito.
1. Clique na guia Certificados SSL no painel de administração do NGINX Proxy Manager.

2. No canto superior direito, clique em Adicionar Certificados SSL -> Personalizado.

Como alternativa a um certificado personalizado, você pode solicitar um certificado Let’s Encrypt diretamente e na hora, selecionando Let’s Encrypt. Mas, para fazer isso, seu site e registro DNS precisam ser públicos. Caso contrário, a aquisição do certificado falhará.
3. Preencha o formulário Adicionar Certificado Personalizado conforme abaixo:
- Nome: Um nome amigável para o certificado no painel de administração. Este tutorial utiliza o nome Testweb Cert.

- Chave do Certificado: Essa chave é fornecida junto com o arquivo de certificado gerado como requisito neste tutorial.
Clique em Procurar e navegue até o arquivo de chave.

Clique duas vezes no arquivo de chave. Para este tutorial, a chave do certificado é chamada mytesthttpd.key.

- Certificado: O próprio arquivo de certificado, seja no formato .crt ou .pem.
Clique em Procurar e navegue até o seu certificado no explorador de arquivos.

Clique duas vezes no arquivo de certificado para abri-lo. Para este tutorial, o arquivo de chave é chamado mytesthttpd.pem.

4. Uma vez preenchidos os três campos, o formulário deve parecer com a captura de tela abaixo. Clique em Salvar para enviar o certificado personalizado.
Este tutorial não utiliza um certificado intermediário. Ignore esse campo por enquanto.

5. Agora, clique em Hosts -> Proxy Hosts.

6. Clique no ícone de menu de três pontos e clique em Editar. Observe que a coluna SSL mostra apenas HTTP neste momento

7. Selecione a guia SSL na janela Editar Proxy Host conforme abaixo. Selecione o certificado que você provisionou no menu suspenso Certificado SSL. Para este tutorial, é o Testweb Cert conforme a captura abaixo.

8. Selecione o certificado que você adicionou anteriormente no menu suspenso Certificado SSL. Como você pode ver abaixo, o nome do certificado a ser selecionado é Testweb Cert.

9. Habilite todas as opções avançadas de SSL disponíveis, conforme mostrado na captura de tela abaixo, e clique em Salvar.
A opção Force SSL irá forçar ou atualizar todas as conexões para HTTPS, mesmo quando o cliente inicialmente tentar acessar apenas a URL HTTP.

A word of warning with HSTS. As browsers will include the site on an internal inclusion list, your site will no longer work under non-SSL conditions. Therefore, make sure that you have everything set up the correct way first.
Você notará que o valor da coluna SSL mudou de Somente HTTP para Personalizado.

10. Por fim, abra uma aba do navegador e navegue novamente para o domínio do seu host virtual. Para este tutorial, é http://testweb.com. A conexão deve ser automaticamente atualizada para HTTPS.

Parabéns! Você concluiu a implantação de um host virtual seguro usando o NGINX Proxy Manager.
Adicionando usuários ao NGINX Proxy Manager
Se você trabalha com uma equipe ou espera que outra pessoa gerencie os hosts virtuais no NPM, você precisará fornecer acesso de usuário. Nesta seção, você irá ampliar o gerenciamento do NPM, especialmente em configurações de equipe, criando um usuário e atribuindo funções e permissões.
1. Clique em Usuários na página inicial do painel de administração.

2. Clique em Adicionar Usuário no canto superior direito do cartão Usuários.

3. Digite o nome completo do usuário (Usuário de Teste), apelido (testuser) e email ([email protected]) nos campos correspondentes e clique em Salvar.
O usuário que você está criando não será um administrador completo, portanto, não habilite a função de Administrador. Em vez disso, você estará atribuindo permissões personalizadas. Clique em Salvar para adicionar o novo usuário.

4. Defina as permissões que deseja atribuir ao usuário. Para este tutorial, o novo usuário terá as seguintes configurações de permissão.
- Pode visualizar apenas itens criados pelo usuário.
- Pode criar, editar e excluir Hosts de Proxy.
- Pode criar, editar e excluir Hosts de Redirecionamento.
- Não pode ver Hosts 404.
- Não pode ver Streams.
- Pode visualizar Listas de Acesso.
- Pode criar, editar e excluir Certificados SSL.
O conjunto de permissões deve ser semelhante à captura de tela abaixo. Clique em Salvar para concluir a adição do novo usuário.

5. Agora, clique no menu kebab do novo usuário e clique em Entrar como Usuário. Esta etapa alterará o contexto do usuário atual para Usuário de Teste.

6. Explore o painel de administração do ponto de vista de um novo usuário. De acordo com as permissões deste usuário, você deve ver menos abas e recursos.

Conclusão
Parabéns por concluir este tutorial do NGINX Proxy Manager. Você aprendeu a gerenciar hosts virtuais e habilitar a colaboração criando usuários pela interface gráfica! Você acha que voltará a gerenciar hosts virtuais do NGINX através da edição manual de arquivos de configuração?
Aqui está uma ideia para testar ainda mais seu aprendizado. Que tal ler sobre Como Servir Subdomínios NGINX ou Múltiplos Domínios. Mas em vez de seguir as configurações manuais, aplique o que você aprendeu e implante e configure os hosts virtuais usando o NGINX Proxy Manager.