Como configurar hosts virtuais para a nuvem privada

Você está vendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
informações

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

Neste documento, descrevemos como criar um host virtual simples. Ou seja, não compatível com TLS. Para mais exemplos, incluindo exemplos de como criar hosts virtuais compatíveis com 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, você precisa especificar o alias do host virtual. Normalmente, esse é o nome DNS do host virtual.

O roteador de borda compara o cabeçalho Host 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 do host.

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

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

192.168.1.31:9001

Quando você cria um comando curl no formato 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, você pode definir o alias do 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, faça uma solicitação como se tivesse uma entrada DNS:

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

Sobre as portas do host virtual no Edge para a nuvem privada 4.16.01 e posterior

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

Na versão 4.16.01 e mais recentes da Apigee para nuvem privada, por padrão, o roteador é executado como usuário "apigee", que não tem acesso a portas privilegiadas, normalmente 1024 ou anteriores. Para 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. Consulte Como configurar um host virtual para saber mais.

Criar hosts virtuais

Nesta seção, descrevemos 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 para nuvem privada usando a API ou a interface do Edge. Eles são descritos nas seções a seguir.

Criar um host virtual usando um navegador

Nesta seção, descrevemos como criar um host virtual usando um navegador (apenas na interface do Edge).

Para criar um host virtual na IU 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 + Virtual Host.

    O Edge exibe o formulário Create Virtual Host.

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

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

    Além disso, observe que:

    • 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 Create 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. Use o valor da propriedade name para configurar um proxy de API e 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 for compatível com 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 quando você cria o proxy de API.

Normalmente, você não publica suas APIs para clientes com um endereço IP e um 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 corresponda ao nome de domínio da entrada de 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 usa 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ê tiver proxies de API atuais, 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 Virtual Host, em que <ms-IP> é o endereço IP ou o nome de domínio do nó do servidor de gerenciamento. Especifique a definição completa do host virtual no corpo da solicitação, não apenas os elementos que você quer alterar. Neste exemplo, você altera 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 nas 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 alterar 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 o procedimento para todos os roteadores.