Gerenciamento Simples de Virtual Host com NGINX Proxy Manager

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:

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.

vi docker-compose.yml

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.

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped #Garanta que o proxy manager sobreviva a falhas
    ports:
      #Permita que as portas dos respectivos containers sejam acessíveis a partir da máquina host
      - '80:80'
      - '81:81' #Porta para o Painel de Administração
      - '443:443'
    volumes:
      #Mapeie os seguintes diretórios dos containers para diretórios correspondentes na máquina host
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

4. Execute o comando docker-compose para iniciar o container em segundo plano (-d) de acordo com as diretivas especificadas.

docker-compose up -d
Running Docker Compose to set up NGINX Proxy Manager container

5. Execute o seguinte comando para garantir que o container esteja em execução.

docker ps

Você deverá ver um processo em execução correspondente ao container do proxy manager, como na captura de tela abaixo, se tudo estiver correto.

Listing running Docker containers

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.

Logging in for the first time

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.

Changing admin user default credentials

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.

Changing the default password

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

Viewing the user list in NGINX Proxy Manager

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.

app2:
    #Nome personalizado para referência interna ao contêiner. Usado para comunicação entre contêineres
    image: 'httpd:latest'
    restart: unless-stopped

O conteúdo do arquivo deve parecer com a captura de tela abaixo. Salve o arquivo e saia do editor.

Adding a web server deployment directive

Execute o docker-compose para iniciar o contêiner em segundo plano (-d).

docker-compose up -d

Você deve receber um feedback semelhante à captura de tela abaixo, confirmando a criação do segundo contêiner.

Creating and starting the Web server with Docker Compose

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.

Creating a VHOST: Opening the Proxy Host card

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

Creating a VHOST: Adding a Proxy Host

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.
  • 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.

Adding the Proxy Host details

Agora você tem um host de proxy na lista.

List of proxy hosts

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.

Accessing the Webserver via the Proxy

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.

Opening the SSL Certificates tab

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

Adding a custom SSL certificate

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.
Provisioning SSL Certificates: Naming the certificate
  • 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.

Provisioning SSL Certificates: Selecting the key file

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

Provisioning SSL Certificates: Selecting the key file
  • 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.

Provisioning SSL Certificates: Selecting the certificate file

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

Provisioning SSL Certificates: Selecting the certificate file

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.

Saving the SSL certificate

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

Provisioning SSL Certificates: Applying the certificate to a Proxy Host

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

Editing a proxy Host

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.

Selecting a certificate for a Proxy Host

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.

Selecting a certificate for a Proxy Host

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.

Enabling enhanced SSL features

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.

Confirming changes in the SSL setting for a Proxy Host

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.

Testing HTTPS access with a browser

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.

Extending NPM with Users: Opening the Users tab

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

Adding a user

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.

Adding user particulars

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.

Saving the user’s permissions

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.

Signing in as the new user

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.

Confirming access permissions

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.

Source:
https://adamtheautomator.com/nginx-proxy-manager/