Sobre hosts virtuais

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

No Edge, um roteador processa todo o tráfego de API recebido. Isso significa que todas as solicitações HTTP e HTTPS para um proxy de API são tratadas primeiro por um roteador de borda.

Um host virtual permite hospedar vários nomes de domínio em um servidor. Para o Edge, o servidor corresponde a um roteador de borda. Ao definir vários hosts virtuais em um roteador, ele pode processar solicitações de API para vários nomes de domínio.

Um host virtual no Edge define o protocolo de acesso (HTTP ou HTTPS), uma porta de roteador aberta e um alias de host. O alias de host geralmente é o nome de domínio DNS que é mapeado para o endereço IP do roteador.

Por exemplo, a imagem a seguir mostra um roteador com duas definições de host virtual:

O primeiro host virtual processa solicitações HTTPS no domínio domainName1 e o segundo processa solicitações HTTP em domainName2.

Em uma solicitação para um proxy de API, o roteador compara o cabeçalho Host da solicitação de entrada com a lista de aliases de host definidos por todos os hosts virtuais para determinar qual host virtual processa a solicitação.

Sobre as definições de hosts virtuais

Os hosts virtuais contêm as seguintes informações:

  • O nome interno do host virtual. Use esse nome para fazer referência ao host virtual nos proxies de API e ao configurar o host virtual.
  • O alias de host do host virtual. Normalmente, o alias do host é o nome de domínio DNS que é mapeado para o endereço IP no roteador. O cabeçalho Host de uma solicitação de proxy de API precisa conter o alias de host do host virtual.
  • Uma porta aberta no roteador.
  • Se o TLS (acesso HTTPS) está ativado ou não (acesso HTTP).

Por exemplo, você especifica as seguintes informações ao criar um host virtual:

  • nome = myvhost
  • alias do host = apis.acme.com
  • porta: 443
  • O TLS está ativado

Com base na configuração acima para o host virtual, uma solicitação para um proxy de API usa o seguinte formato:

https://apis.acme.com/{proxy-base-path}/{resource-path}

em que:

  • {proxy-base-path} é definido quando você cria um proxy de API e é exclusivo para cada proxy. Por exemplo:
    https://apis.acme.com/characters
  • {resource-path} o caminho para um recurso acessível pelo proxy da API. Por exemplo:
    https://apis.acme.com/characters/coyote
    https://apis.acme.com/characters/roadrunner

Sobre hosts virtuais no Edge para a nuvem

Cada organização do Edge inclui automaticamente dois ambientes (test e prod), dois hosts virtuais em cada ambiente (padrão e seguro) e registros DNS para cada alias de host.

O alias de host de cada host virtual fornecido pela Apigee contém o nome da organização e do ambiente, conforme mostrado na tabela a seguir:

Ambiente Nome do host virtual Alias de host Port TLS ativado
prod padrão {org-name}-prod.apigee.net 80 Não
seguro {org-name}-prod.apigee.net 443 Sim
teste padrão {org-name}-test.apigee.net 80 Não
seguro {org-name}-test.apigee.net 443 Sim

Por exemplo, o nome de domínio padrão de uma organização chamada "myorg" no ambiente prod é "myorg-prod.apigee.net". Portanto, para acessar um proxy de API nessa organização, use um URL no formato:

http://myorg-prod.apigee.net/{proxy-base-path}/{resource-path}
https://myorg-prod.apigee.net/{proxy-base-path}/{resource-path}

Planos pagos da Apigee:um nome de domínio que contenha "apigee.net" pode não ser o que você quer expor aos seus clientes. É possível usar uma entrada DNS e um registro CNAME para mapear um nome de domínio para sua organização no Edge. Você também precisa criar um host virtual com o alias de host definido para esse nome de domínio. Isso permite que os desenvolvedores acessem a API por meio de um domínio específico para sua empresa.

Confira um exemplo de domínio personalizado no Edge:

https://apis.acme.com/{proxy-base-path}/{resource-path}

Sobre os hosts virtuais no Edge para nuvem privada

Quando você instala o Apigee Edge para nuvem privada, não há organizações, ambientes ou hosts virtuais padrão criados para você. Depois de concluir o processo de instalação do Edge, a primeira ação normalmente é criar uma organização, um ambiente e um host virtual por meio do processo de "integração".

Para realizar a integração, execute o seguinte comando no nó do servidor de gerenciamento de borda:

/opt/apigee/apigee-service/bin/apigee-service apigee-provision setup-org -f configFile

em que configFile contém as informações necessárias para criar um usuário, organização, ambiente e host virtual.

Por exemplo, você cria:

  • Um usuário de sua escolha para atuar como administrador da organização
  • Uma organização chamada example
  • Um ambiente na organização chamado prod
  • Um host virtual no ambiente chamado default que permite o acesso HTTP na porta 9001
  • Um alias de host do nome DNS usado para acessar o roteador ou o endereço IP do roteador e a porta do host virtual no formato IP:9001.

Depois, você pode adicionar quantas organizações, ambientes e hosts virtuais quiser à versão local do Edge. Confira mais informações em:

Hosts virtuais são abertos no roteador de borda. Portanto, é necessário garantir que a porta especificada para o host virtual esteja aberta no roteador. É possível usar um comando no formulário abaixo para abrir uma porta:

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 9001 -j ACCEPT --verbose

Depois de executar esse comando, você pode acessar suas APIs usando um URL no formato:

http://<router-ip>:9001/{proxy-base-path}/{resource-path}

Normalmente, você não publica suas 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. Exemplo:

http://myAPI.myCo.com/{proxy-base-path}/{resource-path}

Ao definir a entrada DNS, você também precisa criar um host virtual com um alias de host que corresponda ao nome de domínio da entrada DNS. No exemplo acima, você especificaria um alias de host myAPI.myCo.com ao criar o host virtual.

Sobre aliases de host e nomes DNS

Uma propriedade que você define para um host virtual é o alias de host. O alias de host é normalmente o nome DNS do host virtual. A maneira de definir o alias do host depende do tipo de instalação do Edge: nuvem ou nuvem privada.

Alias de host e nomes DNS no Edge para a nuvem

No Edge para a nuvem, quando você cria uma organização do Edge pela primeira vez, a Apigee cria automaticamente dois ambientes (test e prod), dois hosts virtuais em cada ambiente (padrão e seguro) e registros DNS para cada host virtual.

O alias de host dos hosts virtuais contém o nome da organização e do ambiente. Portanto, uma solicitação por um host virtual tem o seguinte formato:

  • http://{org-name}-prod.apigee.net/{proxy-base-path}/{resource-path}
  • https://{org-name}-prod.apigee.net/{proxy-base-path}/{resource-path}
  • http://{org-name}-test.apigee.net/{proxy-base-path}/{resource-path}
  • https://{org-name}-test.apigee.net/{proxy-base-path}/{resource-path}

Normalmente, é recomendável criar hosts virtuais que usem seu nome de domínio, em vez de usar o domínio apigee.net padrão. Para fazer isso, primeiro crie sua própria entrada DNS e registro CNAME.

A figura abaixo mostra uma configuração típica de como o Edge processa uma solicitação de API:

Neste exemplo:

  • api.acme.com é o nome de domínio que você quer.
  • Defina uma entrada DNS e um registro CNAME para apontar api.acme.com para acme-prod.apigee.net.
  • A solicitação contém o cabeçalho Host que o roteador usa para determinar o host virtual que processa a solicitação.

Neste exemplo, você especifica as seguintes informações em uma definição de host virtual:

  • nome = myvhost
  • alias do host = apis.acme.com
  • porta = 443
  • Ativar o acesso TLS

Consulte Como configurar hosts virtuais para a nuvem para mais informações.

Alias de host e nomes de DNS no Edge para nuvens privadas

Assim como no Edge para a nuvem, você cria hosts virtuais que usam seu próprio nome de domínio para o alias de host. Em seguida, crie sua própria entrada DNS e seu registro CNAME para acessar esses hosts virtuais.

Uma das diferenças entre o Cloud e o Private Cloud é que, na Apigee do Cloud, os nomes de DNS são criados automaticamente para suas organizações, no formato:

  • name=default: http://{org-name}-{env-name}.apigee.net (porta 80 do roteador)
  • name=secure: https://{org-name}-{env-name}.apigee.net (porta 443 do roteador)

No Edge para a nuvem privada, você precisa criar as entradas DNS para o endereço IP e a porta do seu roteador.

Por exemplo, você especifica essas informações em uma definição de host virtual:

  • nome = myvhost
  • alias do host = apis.acme.com
  • porta: 9001
  • Ativar acesso TLS

A figura a seguir mostra uma configuração típica de como o Edge processa uma solicitação de API:

Neste exemplo:

  • api.acme.com é o nome de domínio que você quer.
  • Você define uma entrada de DNS e um registro CNAME para apontar api.acme.com para o endereço IP e a porta do roteador.
  • A solicitação contém o cabeçalho Host, que o roteador usa para determinar o host virtual que processa a solicitação.

Consulte Como configurar hosts virtuais para a nuvem privada para mais informações.

Alias e caracteres curinga do host

É possível incluir o caractere curinga "*" no alias de host. O caractere curinga "*" só pode estar no início (antes do primeiro ".") do alias do host e não pode ser misturado com outros caracteres.

Confira a seguir um exemplo de alias de host válido que usa um curinga:

*.example.com

Os exemplos a seguir são inválidos:

  www.*.example.com
  w*.example.com

O uso de um caractere curinga em um alias de host virtual permite que os proxies de API processem chamadas endereçadas a vários subdomínios, como alpha.example.com, beta.example.com ou live.example.com. O uso de um alias curinga também ajuda a usar menos hosts virtuais por ambiente para ficar dentro dos limites do produto, já que um host virtual com um curinga conta como apenas um host virtual.

O certificado TLS do host virtual precisa ter um curinga correspondente no nome CN do certificado. Por exemplo, *.example.com.

Sobre as propriedades de hosts virtuais

No Edge, um host virtual é representado por um objeto XML. Por exemplo, o objeto XML a seguir define um host virtual:

<VirtualHost name="vhostName">
    <HostAliases>
        <HostAlias>hostAlias</HostAlias>
    </HostAliases>
    <Interfaces>
        <!-- Private Cloud only -->
        <Interface>interfaceName</Interface>
    <Port>portNumber</Port>
    <BaseURL>http://myCo.com<</BaseUrl>
    <OCSPStapling>off</OCSPStapling>
    <RetryOptions/>
   <SSLInfo>
        <Enabled>trueFalse</Enabled>
        <ClientAuthEnabled>trueFalse</ClientAuthEnabled>
        <KeyStore>ref://keystoreRef</KeyStore>
        <KeyAlias>keyAlias</KeyAlias>
        <TrustStore>ref://truststoreRef</TrustStore>
        <IgnoreValidationErrors>trueFalse</IgnoreValidationErrors>
    </SSLInfo>
    <Properties>
        <Property name="proxy_read_timeout">timeout</Property>
        <Property name="keepalive_timeout">timeout</Property>
        <Property name="proxy_request_buffering">onOff</Property>
        <Property name="proxy_buffering">onOff</Property>
        <Property name="ssl_protocols">protocolList</Property>
        <Property name="ssl_ciphers">cipherList</Property>
    </Properties>
</VirtualHost>

A lista de propriedades que você pode definir depende se você está usando o Edge para nuvem ou o Edge para nuvem privada. Se você estiver usando o Edge para a nuvem privada, a lista de propriedades disponíveis também vai depender da sua versão do Edge. Para uma descrição completa de todas as propriedades de um host virtual, consulte Referência de propriedade de host virtual.

Para saber mais sobre a criação de hosts virtuais para sua versão específica do Edge, consulte: