設定虛擬主機

Private Cloud 適用的 Edge 4.17.09 版

Edge 上的虛擬主機會定義 API Proxy 公開的網域和 Edge Router 連接埠,並透過擴充功能定義應用程式用來存取 API Proxy 的網址。虛擬主機也會定義是否要使用 HTTP 通訊協定或加密的 HTTPS 通訊協定存取 API Proxy。

做為 Edge 新手上路流程的一部分,您必須建立機構、環境和虛擬主機。Edge 提供 setup-org 指令,讓新使用者更輕鬆地完成這項程序。

建立虛擬主機時,您必須指定下列資訊:

  • 您在 API 代理程式中用來參照虛擬主機的名稱
  • 虛擬主機在路由器上的通訊埠。這些連接埠通常會從 9001 開始,每新增一個虛擬主機就會增加 1。
  • 虛擬主機的主機別名。通常是虛擬主機的 DNS 名稱。

舉例來說,您可以在傳遞至 setup-org 指令的設定檔中,指定以下資訊:

# 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

Edge Router 會將傳入要求的 Host 標頭與可用主機別名的清單進行比較,藉此判斷要處理要求的 API proxy。透過虛擬主機提出要求時,請指定與虛擬主機主機別名相符的網域名稱,或是指定路由器的 IP 位址和包含主機別名的 Host 標頭。

舉例來說,如果您建立的虛擬主機有 myapis.apigee.net 主機別名,且位於 9001 埠,那麼透過該虛擬主機向 API 發出的 cURL 要求,可以使用下列其中一種格式:

  • 如有 myapis.apigee.net 的 DNS 項目:

    curl http://myapis.apigee.net:9001/{proxy-base-path}/{resource-path}
  • 如果您沒有 myapis.apigee.net 的 DNS 項目:

    curl http://<routerIP>:9001/{proxy-base-path}/{resource-path} -H 'Host: myapis.apigee.net'

    在這個表單中,您可以指定 Router 的 IP 位址,並在 Host 標頭中傳遞主機別名。

    注意:cURL 指令、大多數瀏覽器和許多其他公用程式會自動在要求中附加 Host 標頭,並將網域設為標頭的一部分,因此您實際上可以使用以下格式的 cURL 指令:

    curl http://<routerIP>:9001/{proxy-base-path}/{resource-path}

虛擬主機沒有 DNS 項目時可用的選項

如果沒有 DNS 項目,您可以將主機別名設為路由器的 IP 位址和虛擬主機的通訊埠,格式為 <routerIP>:port。例如:

VHOST_ALIAS=192.168.1.31:9001

然後,您可以在下列表單中建立 curl 指令:

curl http://<routerIP>:9001/{proxy-base-path}/{resource-path} 

建議您使用這個選項,因為此做法可與 Edge UI 搭配運作。

如果您有多個路由器,請為每個路由器新增主機別名,並指定每個路由器的 IP 位址和虛擬主機的通訊埠:

# 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"

或者,您也可以將主機別名設為某個值,例如 temp.hostalias.com。接著,您必須在每次要求中傳遞 Host 標頭:

curl -v http://<routerIP>:9001/{proxy-base-path}/{resource-path}  -H 'host: temp.hostalias.com'

或者,您也可以在 /etc/hosts 檔案中新增主機別名。例如,將這行程式碼新增至 /etc/hosts

192.168.1.31   temp.hostalias.com

接著,您可以像使用 DNS 項目一樣提出要求:

curl -v http://myapis.apigee.net:9001/{proxy-base-path}/{resource-path}