Gerenciar Proxies e Virtual Hosts (VHosts) através dos arquivos de configuração do NGINX pode ser tedioso à medida que o número de virtual hosts e serviços web aumenta. Como simplificar o processo? O NGINX Proxy Manager (NPM).
Continue lendo e aprenda a criar, gerenciar e proteger virtual hosts com o console web do NGINX Proxy Manager.
Pré-requisitos
Este tutorial será uma demonstração prática. Se você quiser 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 contêineres – Este tutorial usa o Docker v20.10.12. Instale o Docker com este tutorial se você ainda não tiver nenhuma das alternativas instaladas.
- Docker Compose para configurar o Proxy Manager e seus requisitos automaticamente. Este tutorial usa a versão 1.29.2 do Docker Compose. Instale o Docker Compose para continuar com o restante do artigo.
- O nome de domínio serve como um ponto de extremidade de host virtual. Este tutorial utiliza 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 registrado publicamente.
- Você deve ter um certificado SSL e uma chave de certificado para proteger os hosts virtuais. Crie um certificado e o seu arquivo de chave associado primeiro, caso ainda não tenha um.
Configurando o NGINX Proxy Manager
O NGINX Proxy Manager não é um pacote que você instala no 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 presente.
2. Crie e abra um arquivo YAML chamado docker-compose.yml usando o editor de texto de sua preferência, aqui o vi é usado.
3. Copie e cole o seguinte código no editor. Este código contém as diretrizes para baixar e configurar a imagem mais recente do nginx-proxy-manager. Salve e feche o arquivo para retornar à linha de comando.
4. Execute o docker-compose para iniciar o container em segundo plano (-d) de acordo com as diretrizes especificadas.

5. Execute o seguinte comando para garantir que o container esteja em execução.
Você deve ver um processo em execução correspondente ao container do proxy manager, conforme a 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 navegue até http://<host_ip>:admin-ui-port>. Para sua conveniência, este tutorial usa o localhost implícito em vez de um endereço IP, ou seja, http://localhost:81, para iniciar o painel de administração.
2. Faça login com as credenciais padrão iniciais de endereço de e-mail [email protected] e 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ê 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 em 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 ser semelhante à captura de tela abaixo. Salve o arquivo e saia do editor.

Execute o comando 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 Virtual Host
Agora você tem um serviço da web em execução. Esta seção tem como objetivo permitir o acesso ao servidor da web por meio das portas publicadas pelo 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 virtual host para o servidor da web.

4. Preencha o formulário Novo Proxy Host com os seguintes detalhes para configurar o virtual host.
- Nome de Domínio: Os nomes de domínio nos quais o seu servidor da web será acessível. Este exemplo usa o domínio testweb.com.
- Esquema: O protocolo a ser usado ao acessar o servidor da web. Deixe o valor padrão como
http
por enquanto.
- Hostname / IP de Encaminhamento: O nome de host ou endereço IP do servidor web. Como este tutorial utiliza o Docker Compose para configurar os containers, é suficiente usar
app2
. Digite o nome que você forneceu no arquivo docker-compose.yml.
- Porta de Encaminhamento: 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 containers do Apache httpd.
- Bloquear Explorações Comuns: Como 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 via proxy.
O formulário em sua tela deve ser semelhante à captura de tela abaixo. Clique em Salvar após preencher o formulário.

Agora você tem um host de proxy na lista.

5. Por fim, 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ê verá a página inicial padrão.

Provisionando Certificados SSL
Você implantou o servidor web e confirmou que ele está em execução. Neste ponto, porém, o site ainda não possui um certificado SSL. Embora seja aceitável executar sites internos privados sem um certificado SSL, o mesmo não deve acontecer ao hospedar sites públicos.
Para garantir que as conexões do seu site estejam criptografadas, você instalará um certificado SSL no seu host virtual em seguida. Não se preocupe; você fará isso pelo NGINX Proxy Manager. Mas você já deve ter um certificado SSL no formato PEM e a chave do certificado 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 devem ser públicos. Caso contrário, a aquisição do certificado falhará.
3. Preencha o formulário Adicionar Certificado Personalizado da seguinte forma:
- Nome: Um nome amigável para o certificado no painel de administração. Este tutorial usa o nome Testweb Cert.

- Chave do Certificado: Essa chave vem com o arquivo do certificado que você gerou como requisito neste tutorial.
Clique em Procurar e navegue até o arquivo da chave.

Dê um duplo clique no arquivo da chave. Neste tutorial, a chave do certificado é chamada mytesthttpd.key.

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

Dê um duplo clique no arquivo do certificado para abri-lo. Neste tutorial, o arquivo da chave é chamado mytesthttpd.pem.

4. Depois de preencher todos os três campos, o formulário deve ficar como 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 diz apenas HTTP neste momento

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

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

9. Ative todas as opções aprimoradas de SSL disponíveis, como mostrado na captura de tela abaixo, e clique em Salvar.
A opção Forçar SSL forçará ou atualizará todas as conexões para HTTPS, mesmo quando o cliente inicialmente tentou 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 Apenas HTTP para Personalizado.

10. Por fim, abra uma nova aba do navegador e acesse novamente o domínio do seu host virtual. Para este tutorial, é http://testweb.com. A conexão deve ser atualizada automaticamente 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, será necessário fornecer acesso de usuário. Nesta seção, você irá estender 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 (Test User), 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 irá alterar o contexto do usuário atual para Test User.

6. Explore o painel de administração do ponto de vista do 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 ou Múltiplos Domínios com o NGINX. 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.