Como configurar um host virtual

Edge para nuvem privada v. 4.17.05

Um host virtual na borda define os domínios e as portas do roteador de borda em que um proxy de API é exposto e, por extensão, o URL que os apps usam para acessar um proxy de API. Um host virtual também define se o proxy de API é acessado usando o protocolo HTTP ou o protocolo HTTPS criptografado.

Como parte do processo de integração do Edge, você precisa criar uma organização, um ambiente e um host virtual. O Edge fornece o comando setup-org para facilitar esse processo para novos usuários.

Ao criar o host virtual, especifique as seguintes informações:

  • O nome do host virtual que você usa para referenciá-lo nos proxies da API.
  • A porta do roteador do host virtual. Normalmente, essas portas começam em 9001 e aumentam em um para cada novo host virtual.
  • O alias de host do host virtual. Normalmente, o nome DNS do host virtual.

Por exemplo, em um arquivo de configuração transmitido para o comando setup-org, é possível especificar essas informações como:

# Specify virtual host information.
VHOST_PORT=9001
VHOST_NAME=default

# If you have a DNS entry for the virtual host.
VHOST_ALIAS=myapis.apigee.net

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 meio de 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 um alias de host 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 não houver 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ê vai especificar o endereço IP do cabeçalho do roteador e transmitir o alias do host no Host.

    Observação: o comando cURL, a maioria dos navegadores e muitos outros utilitários anexam automaticamente o cabeçalho Host com o domínio como parte da solicitação, para que você possa usar um comando cURL no formato:

    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:

VHOST_ALIAS=192.168.1.31:9001

Em seguida, crie um comando curl no formulário 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 roteador e a porta do host virtual:

# Specify the IP and port of each router as a space-separated list enclosed in quotes:
# VHOST_ALIAS="192.168.1.31:9001 192.168.1.32:9001"

Outra opção é definir o alias do host como um valor, como temp.hostalias.com. Em seguida, é necessário transmitir o cabeçalho Host em todas as solicitações:

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}

Como usar uma porta protegida em um host virtual

Se quiser criar um host virtual que vincule o roteador a uma porta protegida, como números de porta menores que 1.000, configure o roteador para ser executado como um usuário com acesso a essas portas. Por padrão, o roteador é executado como o usuário "apigee", que não tem acesso a portas com privilégios.

Para executar o roteador como um usuário diferente:

  1. Como raiz, crie o arquivo /opt/apigee/etc/edge-router.d/RUN_USER.sh.
  2. Inclua a seguinte entrada no arquivo:
    RUN_USER=root
    Se você não quiser executar o roteador como raiz, especifique um usuário com acesso à porta.
  3. Salve o arquivo.
  4. Se você tiver especificado um usuário que não seja a raiz, mude o proprietário do arquivo para esse usuário:
    > chown USER:USER /opt/apigee/etc/edge-router.d/RUN_USER.sh
  5. Reinicie o roteador:
    > /opt/apigee/apigee-service/bin/apigee-service reinicialização do roteador de borda da Apigee