Como configurar hosts virtuais

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

Um cliente do Cloud com uma conta paga e todos os clientes do Edge para nuvem privada podem criar um host virtual em uma organização. O usuário que cria o host virtual precisa ter a função de administrador da organização ou uma função personalizada com permissões para modificar um host virtual. Os usuários em outras funções não têm autorização para criar hosts virtuais.

Assista a uma introdução em vídeo sobre hosts virtuais.

Como criar um host virtual

Use o procedimento básico a seguir para criar o host virtual. O procedimento que você usa depende se você é cliente do Cloud ou do Private Cloud e se está ativando o TLS:

  1. Crie uma entrada DNS e um registro CNAME para seu domínio público.
  2. Se você ativar o TLS no host virtual:
    1. Crie e configure um keystore usando o procedimento descrito aqui: Keystores e truststores.
    2. Faça upload do certificado e da chave para o keystore. Verifique se o nome de domínio especificado pelo certificado corresponde ao alias de host que você quer usar para o host virtual.
    3. Crie uma referência ao keystore usando a API ou a interface do Edge. A referência especifica o nome do keystore e o tipo de referência como KeyStore. Consulte Como trabalhar com referências para saber mais sobre como criar e modificar referências.
    4. Se você estiver executando o TLS bidirecional, crie um truststore, faça upload do certificado e crie uma referência a ele. Crie o repositório de confiança usando o procedimento descrito aqui: Keystores e repositórios de confiança.
  3. Crie o host virtual usando a API Criar um host virtual. Ao ativar o TLS, especifique a referência de keystore, a referência de truststore e o alias de chave corretos.
  4. Se você tiver proxies de API, adicione o host virtual ao ProxyEndpoint. O host virtual é adicionado automaticamente a todos os novos proxies de API. Consulte Como configurar um proxy de API para usar um host virtual.

Depois de atualizar um proxy de API para usar o host virtual e criar a entrada DNS e o registro CNAME para o alias do host, é possível acessar o proxy de API conforme mostrado abaixo:

https://api.myCompany.com/v1/project-base-path/resource-path

Exemplo:

https://api.myCompany.com/v1/weather/forecastrss?w=12797282

Como criar um host virtual usando a API ou a interface

É possível criar um host virtual usando a API Edge ou a interface do Edge.

A maioria dos exemplos abaixo usa a API Edge. Para acessar a IU e criar, modificar e excluir hosts virtuais na IU do Edge:

  1. Faça login em apigee.com/edge.

    Os clientes do Edge para nuvem privada usam http://ms-ip:9000 (local), em que ms-ip é o endereço IP ou o nome DNS do nó do servidor de gerenciamento.

  2. Selecione Administrador >Hosts virtuais na barra de navegação à esquerda.
  3. Selecione o ambiente, como prod ou test.
    Os hosts virtuais definidos para o ambiente são mostrados.
  4. Selecione + Host virtual para criar um host virtual ou selecione o nome de um host virtual para editá-lo.

Como criar um host virtual para HTTP

Os clientes do Edge para nuvem privada podem criar um host virtual usando HTTP.

Para criar um host virtual que não ofereça suporte a TLS, 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>api.myCompany.com</HostAlias>
   </HostAliases>
   <Interfaces/>
   <Port>80</Port>
</VirtualHost>

Nessa definição, você:

  • Especifique o nome como myVHost. Use o nome para fazer referência ao host virtual em um proxy de API ou em uma chamada de API.
  • Especifique o alias de host como api.myCompany.com. Esse é o domínio público usado para acessar suas APIs, conforme definido por uma definição de DNS e um registro CNAME.
  • Especifique o número da porta como 80. Se omitido, a porta será definida como 443 por padrão.
  • Há outras propriedades que podem ser definidas no host virtual. Para uma referência de todas as propriedades, consulte Referência de propriedades de host virtual.

Se você 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. Se você criar um novo proxy de API que não pode ser acessado por um host virtual específico, edite o proxy para remover esse host virtual do ProxyEndpoint.

Em seguida, é possível acessar um proxy de API por meio desse host virtual fazendo uma solicitação para:

http://api.myCompany.com/proxy-base-path/resource-path
https://api.myCompany.com/proxy-base-path/resource-path

Crie o host virtual usando a API Criar um host virtual:

curl -X POST -H "Content-Type:application/xml" \
  http://ms-IP:8080/v1/o/org_name/environments/env_name/virtualhosts \
  -d '<VirtualHost name="myVHost">
        <HostAliases>
            <HostAlias>api.myCompany.com</HostAlias>
        </HostAliases>
        <Interfaces/>
        <Port>80</Port>
    </VirtualHost>' \
  -u sysAdminEmail:password

Como criar um host virtual para TLS unidirecional

O objeto XML a seguir define um host virtual para TLS unidirecional:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>api.myCompany.com</HostAlias>
    </HostAliases>
    <Port>443</Port>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
    </SSLInfo>
</VirtualHost>

Nessa definição, você ativa o TLS definindo o elemento <Enable> como "true" e usa os elementos <KeyStore> e <KeyAliase> para especificar o keystore e o alias de chave usados pela conexão TLS.

Consulte TLS/SSL para mais informações sobre o uso do TLS.

Como especificar o nome do keystore e do truststore no host virtual

Ao configurar um host virtual para oferecer suporte ao TLS, você especifica um keystore usando uma referência. Uma referência é uma variável que contém o nome do keystore ou do truststore, em vez de especificar o nome do keystore ou truststore diretamente, conforme mostrado abaixo:

    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
    </SSLInfo>

A vantagem de usar uma referência é poder alterar o valor da referência para mudar o keystore usado pelo host virtual, geralmente porque o certificado no keystore atual expira em breve. Não é necessário reiniciar o roteador de borda para alterar o valor da referência. Consulte Como trabalhar com referências para mais informações sobre como criar e modificar referências.

Só é possível usar uma referência ao keystore e truststore. Não é possível usar uma referência ao alias. Ao alterar a referência para um keystore, verifique se o nome do alias do certificado é o mesmo do keystore antigo.

Restrições ao usar referências a keystores e truststore

Você precisa considerar a seguinte restrição ao usar referências a keystores e truststores:

  • Só é possível usar as referências a keystore e truststore em hosts virtuais se você oferecer suporte a SNI e encerrar o SSL nos roteadores da Apigee.
  • Se você tiver um balanceador de carga na frente dos roteadores da Apigee e encerrar o TLS no balanceador, não será possível usar as referências do keystore e truststore em hosts virtuais.

Criar um host virtual para TLS bidirecional

Para ativar o TLS bidirecional, defina o elemento <ClientAuthEnabled> como true e especifique um truststore usando uma referência com o elemento <TrustStore>. O repositório de confiança contém o emissor do certificado do cliente e a cadeia de AC do certificado, o que é obrigatório. O cliente também precisa ser configurado corretamente para o TLS bidirecional.

Para criar um host virtual para TLS bidirecional, crie um objeto XML que defina o host virtual:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>api.myCompany.com</HostAlias>
    </HostAliases>
    <Port>443</Port>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>true</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
        <TrustStore>ref://myTestTruststoreRef</TrustStore>
    </SSLInfo>
</VirtualHost>

Nessa definição, você:

  • Ative o TLS bidirecional definindo <ClientAuthEnabled> como verdadeiro.
  • Especifique a referência ao repositório de confiança usando o elemento <TrustStore>. O repositório de confiança contém o emissor do certificado do cliente e a cadeia de AC do certificado, o que é obrigatório.

Consulte TLS/SSL para mais informações sobre o uso do TLS.

Como modificar um host virtual

Um cliente do Cloud com uma conta paga e todos os clientes do Edge for Private Cloud podem usar a API Atualizar um host virtual para atualizar um host virtual. Essa API permite definir todas as propriedades do host virtual descritas em Referência da propriedade do host virtual.

Atualize o host virtual usando a API Update a Virtual Host. Ao usar a API, é necessário especificar a definição completa do host virtual no corpo da solicitação, e não apenas os elementos que você quer mudar.

Neste exemplo, você define o valor da propriedade proxy_read_timeout:

curl -X PUT -H "Content-Type:application/xml" \
    https://api.enterprise.apigee.com/v1/o/org_name/e/env_name/virtualhosts/vhost_name \
    -d '<VirtualHost  name="myTLSVHost">
         <HostAliases>
           <HostAlias>api.myCompany.com</HostAlias>
         </HostAliases>
         <Port>443</Port>
         <SSLInfo>
           <Enabled>true</Enabled>
           <ClientAuthEnabled>false</ClientAuthEnabled>
           <KeyStore>ref://myTestKeystoreRef</KeyStore>
           <KeyAlias>myKeyAlias</KeyAlias>
         </SSLInfo>
         <Properties>
           <Property name="proxy_read_timeout">50</Property>
         </Properties>
     </VirtualHost>' \
    -u orgAdminEmail:password

Como excluir um host virtual

Antes de excluir um host virtual de um ambiente, atualize todos os proxies de API que fazem referência ao host virtual para remover a referência. Consulte Como configurar um proxy de API para usar um host virtual.

Exclua o host virtual usando a API Delete a Virtual Host:

curl -X DELETE \
  https://api.enterprise.apigee.com/v1/o/org_name/e/env_name/virtualhosts/vhost_name \
  -u orgAdminEmail:password

Como conferir informações sobre um host virtual

Confira informações sobre os hosts virtuais definidos em um ambiente, conforme descrito abaixo.

Edge

Para conferir informações sobre um host virtual usando a interface do Edge:

  1. Faça login em apigee.com/edge.

    Os clientes do Edge para nuvem privada usam http://ms-ip:9000 (local), em que ms-ip é o endereço IP ou o nome DNS do nó do servidor de gerenciamento.

  2. Selecione Administrador > Hosts virtuais na barra de navegação à esquerda.
  3. Selecione o ambiente, como prod ou test.

    Os hosts virtuais definidos para o ambiente aparecem. Se o host virtual estiver configurado para usar um keystore ou truststore, clique em Mostrar para conferir mais informações.

Se o host virtual estiver configurado para usar TLS/SSL, um ícone de cadeado vai aparecer ao lado do nome do host. Isso significa que um certificado, uma chave e uma cadeia de certificados TLS/SSL foram enviados para o Edge e associados ao host virtual. Para conferir informações sobre os certificados disponíveis:

  1. Selecione Administrador > Ambiente > Armazenamentos de chaves TLS na barra de navegação à esquerda.
  2. Selecione o ambiente (geralmente prod ou test).
  3. Abra os keystores para conferir o certificado.

Edge clássico (nuvem privada)

Para conferir informações sobre um host virtual usando a interface clássica do Edge:

  1. Faça login em http://ms-ip:9000, em que ms-ip é o endereço IP ou o nome DNS do nó do servidor de gerenciamento.
  2. Selecione Administrador > Hosts virtuais na barra de navegação à esquerda.
  3. Selecione o ambiente, como prod ou test.
  4. Clique na guia Hosts virtuais.

    Os hosts virtuais definidos para o ambiente aparecem. Se o host virtual estiver configurado para usar um keystore ou truststore, clique em Mostrar para conferir mais informações.

    A guia &quot;Hosts virtuais&quot; mostra informações sobre o nome, a porta, o alias e muito mais.

Se o host virtual estiver configurado para usar TLS/SSL, um ícone de cadeado vai aparecer ao lado do nome do host. Isso significa que um certificado, uma chave e uma cadeia de certificados TLS/SSL foram enviados para o Edge e associados ao host virtual. Para conferir informações sobre os certificados disponíveis:

  1. Selecione Administrador > Certificados TLS na barra de navegação na parte de cima.
  2. Selecione o ambiente (geralmente prod ou test).
  3. Abra os keystores para conferir o certificado.

Como visualizar um host virtual com a API Edge

Também é possível usar as APIs do Edge para conferir informações sobre hosts virtuais. Por exemplo, a API List Virtual Hosts retorna uma lista de todos os hosts virtuais:

curl -X GET -H "accept:application/xml" \
    https://api.enterprise.apigee.com/v1/o/org_name/environments/env_name/virtualhosts \
    -u orgAdminEmail:pWord

Em que orgAdminEmail:pWord é o nome de usuário e a senha do administrador da organização e org_name/env_name especificam a organização e o ambiente que contêm o host virtual. Exemplo de resposta:

[
 "default",
 "secure"
]

Para conferir informações sobre um host virtual específico, use a API Get Virtual Host:

curl -X GET -H "accept:application/xml" \
    https://api.enterprise.apigee.com/v1/o/org_name/environments/env_name/virtualhosts/vhost_name \
    -u orgAdminEmail:pWord

Em que vhost_name é o nome do host virtual. Por exemplo, é possível especificar vhost_name como "seguro" para conferir a configuração do host virtual seguro padrão criado pela Apigee:

<VirtualHost name="secure">
    <HostAliases>
        <HostAlias>api.myCompany.com</HostAlias>
    </HostAliases>
    <Port>443</Port>
    <Properties/>
    <Interfaces/>
    <RetryOptions/>
    <SSLInfo>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <Enabled>true</Enabled>
        <KeyAlias>freetrial</KeyAlias>
        <KeyStore>ref://freetrial</KeyStore>
        <IgnoreValidationErrors>false</IgnoreValidationErrors>
    </SSLInfo>
</VirtualHost>

Como configurar um proxy de API para usar um host virtual

Quando você cria um novo proxy de API, o Edge o configura automaticamente para usar todos os hosts virtuais disponíveis na organização. Uma solicitação para um proxy de API por meio de um host virtual usa o seguinte formato:

https://host-alias/proxy-base-path/resource-path

Em que:

  • host-alias geralmente é o nome DNS do host virtual.
  • proxy-base-path é definido quando você cria um proxy de API e é exclusivo para cada proxy de API.
  • resource-path o caminho para um recurso acessível pelo proxy da API.

Como controlar os hosts virtuais usados por um proxy de API

Na configuração XML de um proxy de API, você usa a tag virtualhost para especificar o nome do host virtual associado ao proxy de API:

<HTTPProxyConnection>
  <BasePath>/v1/my/proxy/basepath</BasePath>
  <VirtualHost>secure</VirtualHost>
  <VirtualHost>default</VirtualHost>
</HTTPProxyConnection>

Por exemplo, <VirtualHost>secure</VirtualHost> significa que um cliente pode chamar o proxy da API usando o alias do host do host virtual "seguro".

Normalmente, você modifica os hosts virtuais associados a um proxy de API quando:

  • Você cria um novo host virtual e tem proxies de API. É necessário editar todos os proxies de API atuais para adicionar o novo host virtual.
  • Você cria um novo proxy de API que não pode ser acessado por um host virtual específico. Edite o proxy da API para remover esse host virtual da definição.

Para modificar os hosts virtuais associados a um proxy de API:

  1. Acesse o editor de proxy de API, conforme descrito abaixo.

    Edge

    Para acessar o editor de proxy da API usando a interface do Edge:

    1. Faça login em apigee.com/edge.

      Os clientes do Edge para nuvem privada usam http://ms-ip:9000 (local), em que ms-ip é o endereço IP ou o nome DNS do nó do servidor de gerenciamento.

    2. Selecione Develop > API Proxies na barra de navegação à esquerda.
    3. Selecione o proxy de API que você quer editar na lista.

    Edge clássico (nuvem privada)

    Para acessar o editor de proxy de API usando a IU clássica do Edge:

    1. Faça login em http://ms-ip:9000, em que ms-ip é o endereço IP ou o nome DNS do nó do servidor de gerenciamento.
    2. Selecione APIs > Proxies de API na barra de navegação de cima.
    3. Selecione o proxy de API que você quer editar na lista.
  2. Clique na guia Desenvolver.
  3. Em Endpoints de proxy, selecione padrão.
  4. Na área do código:
    1. Remova todos os elementos <VirtualHost> de hosts virtuais que não são compatíveis com o proxy de API.
    2. Adicione um novo elemento <VirtualHost> com o nome do novo host virtual. Por exemplo, se o novo host virtual for chamado MyVirtualHost, adicione a seguinte tag:
      <HTTPProxyConnection>
        <BasePath>/v1/my/proxy/basepath</BasePath>
        <VirtualHost>default</VirtualHost>
        <VirtualHost>secure</VirtualHost>
        <VirtualHost>MyVirtualHost</VirtualHost>
      </HTTPProxyConnection>
  5. Salve o proxy da API. Se o proxy de API tiver sido implantado, o salvamento o reimplanta com a nova configuração.

Como definir o URL de base exibido pela interface do Edge para um proxy de API

A interface do Edge mostra o URL de um proxy de API com base nas configurações no host virtual correspondente ao local em que o proxy é implantado. Essa tela pode incluir o número da porta do roteador do host virtual.

Na maioria dos casos, o URL exibido na interface do Edge é o correto para fazer solicitações externas ao proxy. No entanto, para algumas configurações, o URL exibido não está correto. Por exemplo, qualquer uma das seguintes configurações pode fazer com que o URL exibido não corresponda ao URL real usado para fazer solicitações externas ao proxy:

  • A terminação SSL ocorre em um balanceador de carga
  • O mapeamento de portas ocorre entre um balanceador de carga e os roteadores da Apigee
  • Um balanceador de carga configurado com a substituição de caminho

O Edge oferece suporte a um atributo no host virtual chamado <BaseUrl>, que permite substituir o URL exibido pela interface do Edge. Confira um exemplo que mostra o objeto de host virtual com o atributo <BaseUrl>. Neste exemplo, o valor "http://myCo.com" aparece na interface do Edge:

<VirtualHost name="myTLSVHost">
  <HostAliases>
    <HostAlias>api.myCompany.com</HostAlias>
  </HostAliases>
  <BaseUrl>http://myCo.com</BaseUrl>
  <Port>443</Port>
  <SSLInfo>
    <Enabled>true</Enabled>
    <ClientAuthEnabled>false</ClientAuthEnabled>
    <KeyStore>ref://myTestKeystoreRef</KeyStore>
    <KeyAlias>myKeyAlias</KeyAlias>
  </SSLInfo>
</VirtualHost>

O valor de <BaseUrl> precisa incluir o protocolo (por exemplo, "http://" ou "https://").

Se <BaseUrl> não estiver definido, o URL padrão renderizado pela interface do Edge vai aparecer como: "api.myCompany.com", enquanto o alias de host real é "http://myCo.com".