Sobre hosts virtuais

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

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

Com um host virtual, você pode hospedar vários nomes de domínio em um servidor. Na borda, o servidor corresponde a um roteador de borda. Ao definir vários hosts virtuais em um roteador, ele poderá gerenciar 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 aberta do roteador e um alias de host. O alias do host é normalmente 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 a um proxy de API, o roteador compara o cabeçalho Host da solicitação recebida com a lista de aliases de host definida por todos os hosts virtuais para determinar qual host virtual processa a solicitação.

Sobre as definições de host virtual

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 das solicitações de proxy de API precisa conter o alias do host virtual.
  • Uma porta aberta no roteador.
  • Se o TLS (acesso HTTPS) está ativado ou não (acesso HTTP).

Por exemplo, especifique 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 formulário:

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

onde:

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

Sobre hosts virtuais no Edge para o Cloud

Cada organização de 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 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
proteger {org-name}-prod.apigee.net 443 Sim
teste padrão {org-name}-test.apigee.net 80 Não
proteger {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 contém "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. Assim, os desenvolvedores podem acessar a API usando um domínio específico da sua empresa.

Confira um exemplo de domínio personalizado no Edge:

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

Sobre 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 pelo 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, uma organização, um ambiente e um host virtual.

Por exemplo, você cria:

  • Um usuário escolhido para atuar como administrador da organização
  • Uma organização chamada example
  • Um ambiente da organização chamada prod
  • Um host virtual no ambiente chamado default que permite 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.

Posteriormente, será possível adicionar qualquer número de organizações, ambientes e hosts virtuais à versão local do Edge. Veja mais informações nos links abaixo:

Os hosts virtuais são abertos no roteador de borda. Portanto, você precisa garantir que a porta especificada para o host virtual esteja aberta no roteador. Use 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

Após executar esse comando, acesse as 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 de myAPI.myCo.com ao criar o host virtual.

Sobre aliases de host e nomes de DNS

Uma propriedade definida para um host virtual é o alias do host. O alias do host costuma ser o nome DNS do host virtual. A definição do alias do host depende do tipo de instalação do Edge: nuvem ou nuvem privada.

Aliases de host e nomes de DNS no Edge para o Cloud

No Edge para a nuvem, quando você cria uma organização de Edge, 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. Assim, uma solicitação por um host virtual tem este 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, você quer criar hosts virtuais que usem seu nome de domínio em vez de usar o domínio apigee.net padrão. Para isso, primeiro crie sua própria entrada DNS e um registro CNAME.

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 desejado.
  • Defina uma entrada DNS e um registro CNAME que aponte 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 acesso TLS

Consulte Como configurar hosts virtuais para o Cloud para mais informações.

Aliases de host e nomes de DNS no Edge para a nuvem privada

Assim como no Edge para o Cloud, 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 registro CNAME para acessar esses hosts virtuais.

Uma das diferenças entre a nuvem e a nuvem privada é que, no Cloud Apigee, nomes DNS foram 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 de roteador 443)

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

Por exemplo, especifique estas 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 desejado.
  • Defina uma entrada DNS e um registro CNAME a fim de 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 saber mais.

Aliases de host e caracteres curinga

Você pode incluir o caractere curinga "*" no alias de host. O caractere curinga "*" pode estar apenas no início (antes do primeiro ".") do alias de host e não pode ser combinado com outros caracteres.

Confira a seguir um exemplo de alias de host válido que usa um caractere 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 da 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 com caractere curinga também ajuda a usar menos hosts virtuais por ambiente para permanecer dentro dos limites do produto, já que um host virtual com caractere curinga conta como apenas um.

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

Sobre as propriedades do host virtual

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 podem ser definidas depende se você está usando o Edge para a nuvem ou o Edge para a nuvem privada. Se você estiver usando o Edge para a nuvem privada, a lista de propriedades disponíveis também dependerá da sua versão do Edge. Para uma descrição completa de todas as propriedades de um host virtual, consulte Referência de propriedades de host virtual.

Para saber mais sobre como criar hosts virtuais para sua versão específica do Edge, acesse: