Sobre hosts virtuais

Você está lendo 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 do Edge.

Um host virtual permite hospedar vários nomes de domínio em um servidor. Para o Edge, o servidor corresponde a um roteador do Edge. 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 host alias. 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 Host cabeçalho 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 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 de 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:

  • name = myvhost
  • host alias = apis.acme.com
  • port = 443
  • TLS is enabled

Com base na configuração acima para o host virtual, uma solicitação para um proxy de API usa o 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 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 em 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 ambiente, conforme mostrado na tabela a seguir:

Ambiente Nome do host virtual Alias de host Porta 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 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 como esse nome de domínio. Isso permite que os desenvolvedores acessem sua API por 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

Ao instalar 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, sua primeira ação geralmente é 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 do Edge:

/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 de sua escolha para funcionar como administrador da organização
  • Uma organização chamada example
  • Um ambiente na 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.

Mais tarde, você pode adicionar qualquer número de organizações, ambientes e hosts virtuais à sua versão local do Edge. Para mais informações, consulte:

Os hosts virtuais são abertos no roteador do Edge. Portanto, é necessário garantir que a porta especificada para o host virtual esteja aberta no roteador. É possível usar um comando no formato 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 número de porta. Em vez disso, você define uma entrada DNS para o roteador e a porta. Por 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 DNS

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

Aliases 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 automaticamente cria 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 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 fazer isso, primeiro crie sua própria entrada DNS e 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.
  • Você define 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:

  • name = myvhost
  • host alias = apis.acme.com
  • port = 443
  • Ativar acesso TLS

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

Aliases de host e nomes DNS no Edge para nuvem privada

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 registro CNAME para acessar esses hosts virtuais.

Uma das diferenças entre a nuvem e a nuvem privada é que, na nuvem, a Apigee criou automaticamente nomes DNS para suas organizações, no formato:

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

No Edge para nuvem privada, é necessário criar as entradas DNS para o endereço IP e a porta do roteador.

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

  • name = myvhost
  • host alias = apis.acme.com
  • port = 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.
  • Você define uma entrada 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.

Aliases de host e caracteres curinga

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

Confira a seguir um exemplo de alias de host válido usando 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 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 de 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 um caractere curinga conta como apenas um host virtual.

O certificado TLS do host virtual precisa ter um caractere curinga correspondente no nome comum 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 é baseada no uso do Edge para a nuvem ou do Edge para nuvem privada. Se você estiver usando o Edge para 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 propriedade do host virtual.

Para mais informações sobre como criar hosts virtuais para sua versão específica do Edge, consulte: