Como configurar hosts virtuais para a nuvem privada

Você está lendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
info

Em uma instalação local, você tem controle total sobre os hosts virtuais. É possível criar hosts virtuais para qualquer organização, em qualquer ambiente, usando ou não o TLS.

Este documento descreve como criar um host virtual simples. Ou seja, um que não seja compatível com TLS. Para mais exemplos, incluindo exemplos sobre como criar hosts virtuais que oferecem suporte a TLS, consulte Como configurar o acesso TLS a uma API para a nuvem privada.

Saiba mais:

Sobre aliases de host

Ao criar o host virtual, é necessário especificar o alias de host do host virtual. Normalmente, esse é o nome DNS do host virtual.

O roteador do Edge compara o Host cabeçalho da solicitação recebida com a lista de aliases de host disponíveis como parte da determinação do proxy de API que processa a solicitação. Ao fazer uma solicitação por um host virtual, especifique um nome de domínio que corresponda ao alias de host de um host virtual ou especifique o endereço IP do roteador e o cabeçalho Host que contém o alias de host.

Por exemplo, se você criou um host virtual com um alias de host de myapis.apigee.net na porta 9001, uma solicitação cURL para uma API por esse host virtual poderá usar um dos seguintes formulários:

  • Se você tiver uma entrada DNS para myapis.apigee.net:

    curl http://myapis.apigee.net:9001/proxy-base-path/resource-path
  • Se você não tiver uma entrada DNS para myapis.apigee.net:

    curl http://routerIP:9001/proxy-base-path/resource-path -H 'host:myapis.apigee.net'

    Nesse formulário, você especifica o endereço IP do roteador e transmite o alias de host no Host cabeçalho.

    curl http://routerIP:9001/proxy-base-path/resource-path

Opções quando você não tem uma entrada DNS para o host virtual

Uma opção quando você não tem uma entrada DNS é definir o alias de host para o endereço IP do Roteador e a porta do host virtual, como routerIP:port. Por exemplo:

192.168.1.31:9001

Quando você faz um comando curl no formulário abaixo:

curl http://routerIP:9001/proxy-base-path/resource-path

Essa opção é preferencial porque funciona bem com a interface do Edge.

Se você tiver vários roteadores, adicione um alias de host para cada roteador, especificando o endereço IP de cada roteador e a porta do host virtual.

Como alternativa, é possível definir o alias de host como um valor, como temp.hostalias.com. Em seguida, é necessário transmitir o cabeçalho Host em cada solicitação:

curl -v http://routerIP:9001/proxy-base-path/resource-path -H 'Host: temp.hostalias.com'

Ou adicione o alias de host ao arquivo /etc/hosts. Por exemplo, adicione esta linha a /etc/hosts:

192.168.1.31 temp.hostalias.com

Em seguida, é possível fazer uma solicitação como se você tivesse uma entrada DNS:

curl -v http://myapis.apigee.net:9001/proxy-base-path/resource-path

Sobre portas de host virtual no Edge para nuvem privada 4.16.01 e versões mais recentes

Ao criar um host virtual, especifique a porta do roteador usada pelo host virtual. Por exemplo, a porta 9001.

Para as versões 4.16.01 e mais recentes do Apigee para nuvem privada, por padrão, o roteador é executado como o usuário "apigee", que não tem acesso a portas privilegiadas, normalmente as portas 1024 e abaixo. Se você quiser criar um host virtual que vincule o roteador a uma porta protegida, será necessário configurar o roteador para ser executado como um usuário com acesso a essas portas. Consulte Como configurar um host virtual para mais informações.

Criar hosts virtuais

Esta seção descreve como criar hosts virtuais para o Apigee Edge para nuvem privada. Para criar um novo host virtual, é necessário ser um administrador da organização.

É possível criar hosts virtuais para o Apigee Edge para nuvem privada usando a API ou a interface do Edge. Esses itens são descritos nas seções a seguir.

Criar um host virtual usando um navegador

Esta seção descreve como criar um host virtual usando um navegador (somente na interface do Edge).

Para criar um novo host virtual na interface do Edge, faça o seguinte:

  1. Faça login na interface de gerenciamento do Edge.
  2. Selecione Admin > Hosts virtuais.
  3. Selecione o ambiente na lista suspensa.

    O Edge mostra uma lista de hosts virtuais para esse ambiente.

  4. Para criar um novo host virtual, selecione + Host virtual.

    O Edge mostra o formulário Criar host virtual.

    Também é possível clicar no nome de um host virtual atual para editá-lo.

  5. Defina seu novo host virtual. Observe que o campo URL base precisa incluir o protocolo (ou seja, prefixe o valor do campo com "http://" ou "https://").

    Além disso, observe que:

    • Não há limite para o número de hosts virtuais que podem ser criados.
    • O TLS é opcional e pode ser a versão 1.0, 1.1 ou 1.2.
    • A porta do host virtual é configurável.
  6. Clique no botão Criar para salvar o novo host virtual.

Criar um host virtual com a API

Para criar um host virtual com a API, crie um objeto XML que defina o host virtual. Por exemplo, o objeto XML a seguir define um host virtual que usa o protocolo HTTP:

<VirtualHost name="myVHost">
   <HostAliases>
     <HostAlias>DNS_name_or_IP:port</HostAlias>
   </HostAliases>
   <Interfaces/>
   <Port>9005</Port>
</VirtualHost>

Observe que o host virtual contém uma propriedade name. Você usa o valor da name propriedade para configurar um proxy de API para usar o host virtual.

Em seguida, é possível acessar um proxy de API por esse host virtual fazendo uma solicitação para:

http://routerIP:port/proxy-base-path/resource-path
https://routerIP:port/proxy-base-path/resource-path

Em que:

  • http ou https: se o host virtual estiver configurado para oferecer suporte a TLS, use HTTPS. Se o host virtual não oferecer suporte a TLS, use HTTP.
  • routerIP:port é o endereço IP e o número da porta do host virtual.
  • proxy-base-path e resource-path são definidos ao criar o proxy de API.

Normalmente, não é possível publicar APIs para clientes com um endereço IP e um número de porta. Em vez disso, defina uma entrada DNS para o roteador e a porta. Por exemplo:

http://api.myCompany.com/proxy-base-path/resource-path
https://api.myCompany.com/proxy-base-path/resource-path

Se você definir a entrada DNS, será necessário criar um alias de host para o host virtual que corresponda ao nome de domínio da entrada DNS. O alias de host precisa corresponder à string que o cliente transmite no Host cabeçalho. No exemplo acima, você especificaria um alias de host de api.myCompany.com.

<VirtualHost name="myVHost">
    <HostAliases>
        <HostAlias>api.myCompany.com</HostAlias>
    </HostAliases>
    <Interfaces/>
    <Port>9005</Port>
</VirtualHost>

Para criar um host virtual que usa o protocolo HTTP, faça o seguinte:

  1. Crie o host virtual usando a Criar um Host Virtual API, em que ms-IP é o endereço IP ou o nome de domínio do nó do servidor de gerenciamento:
    $ curl -X POST -H "Content-Type:application/xml" \
    http://ms-IP:8080/v1/o/org_name/environments/env_name/virtualhosts \
    -d '<VirtualHost name="newVHost">
        <HostAliases>
          <HostAlias>api.myCompany.com</HostAlias>
        </HostAliases>
        <Interfaces/>
        <Port>9005</Port>
      </VirtualHost>' \
    -u sysAdminEmail:password
  2. Crie o registro DNS para o host virtual que corresponde ao alias de host.
  3. Se você tiver proxies de API, adicione o host virtual ao elemento <HTTPConnection> no endpoint do proxy. O host virtual é adicionado automaticamente a todos os novos proxies de API. Consulte Como configurar um proxy de API para usar um host virtual.

Como modificar um host virtual

Para modificar um host virtual, faça o seguinte:

  1. Atualize o host virtual usando a API Atualizar um host virtual, em que <ms-IP> é o endereço IP ou o nome de domínio do nó do servidor de gerenciamento. É necessário especificar a definição completa do host virtual no corpo da solicitação, não apenas os elementos que você quer mudar. Neste exemplo, você muda o número da porta do host virtual de 9008 para 9009:

    curl -X PUT -H "Content-Type:application/xml" \
      http://ms-IP:8080/v1/o/org_name/environments/env_name/virtualhosts/vhost_name \
      -d '<VirtualHost name="newVHost">
        <HostAliases>
          <HostAlias>api.myCompany.com</HostAlias>
        </HostAliases>
        <Interfaces/>
        <Port>9009</Port>
      </VirtualHost>' \
      -u email:password
  2. Somente para as versões 4.16.01 e 4.16.05 do Edge para nuvem privada: se você modificar um host virtual atual e ativar ou desativar o TLS sem mudar o número da porta, faça o seguinte:
    1. Interrompa o roteador:

      /opt/apigee/apigee-service/bin/apigee-service edge-router stop
    2. Exclua todos os arquivos em /opt/nginx/conf.d:

      rm -f /opt/nginx/conf.d/*
    3. Inicie o roteador:

      /opt/apigee/apigee-service/bin/apigee-service edge-router start
    4. Repita para todos os roteadores.