Como configurar hosts virtuais para a nuvem privada

Você está visualizando 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.

Neste documento, descrevemos como criar um host virtual simples. Ou seja, uma que não oferece suporte ao TLS. Para conferir mais exemplos, incluindo exemplos de criação de hosts virtuais com suporte a TLS, consulte Como configurar o acesso TLS a uma API para a nuvem privada.

Saiba mais:

Sobre os aliases de host

Ao criar o host virtual, especifique o alias dele. Normalmente, é o nome DNS do host virtual.

O roteador de borda compara o cabeçalho Host da solicitação de entrada 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 do host virtual ou especifique o endereço IP do roteador e o cabeçalho Host que contém o alias do 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 usando esse host virtual pode 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 do host no cabeçalho Host.

    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 do host para o endereço IP do roteador e a porta do host virtual, como routerIP:port. Por exemplo:

192.168.1.31:9001

Ao criar um comando curl no formulário abaixo:

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

Essa opção é preferível porque funciona bem com a interface do Edge.

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

Como alternativa, defina o alias do host como um valor, como temp.hostalias.com. Em seguida, transmita 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, faça uma solicitação como se você tivesse uma entrada de DNS:

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

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

Ao criar um host virtual, você especifica a porta do roteador usada por ele. Por exemplo, a porta 9001.

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

Criar hosts virtuais

Esta seção descreve como criar hosts virtuais para o Apigee Edge para nuvem privada. Para criar um novo host virtual, você precisa ser um administrador da organização.

É possível criar hosts virtuais para o Apigee Edge for Private Cloud usando a API ou a interface do Edge. Eles 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:

  1. Faça login na interface de gerenciamento do Edge.
  2. Selecione Administrador > 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.

    No Edge, há um formulário Create Virtual Host.

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

  5. Defina o novo host virtual. O campo URL base precisa incluir o protocolo, ou seja, prefixar o valor do campo com "http://" ou "https://".

    Além disso, observe o seguinte:

    • Não há limite para o número de hosts virtuais que você pode criar.
    • 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 seu 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>

O host virtual contém uma propriedade name. Use o valor da propriedade name para configurar um proxy de API para usar o host virtual.

Em seguida, é possível acessar um proxy de API por meio desse 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 for compatível com TLS, use o 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 quando você cria o proxy de API.

Normalmente, você não publica suas APIs para clientes com um endereço IP e número de porta. Em vez disso, você define uma entrada DNS para o roteador e a porta. 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 corresponde ao nome de domínio da entrada DNS. O alias do host precisa corresponder à string que o cliente transmite no cabeçalho Host. 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 use o protocolo HTTP, faça o seguinte:

  1. Crie o host virtual usando a API Create a Virtual Host, 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 do host.
  3. Se você já tiver proxies de API, adicione o host virtual ao elemento <HTTPConnection> no endpoint de 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 Update a Virtual Host, 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 o Edge para nuvem privada versões 4.16.01 e 4.16.05, se você modificar um host virtual atual e ativar o TLS ou desativar o TLS sem mudar o número da porta, faça o seguinte:
    1. Pare 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.