設定虛擬主機

Edge for Private Cloud 4.17.05 版

Edge 上的虛擬主機會定義 API Proxy 公開的網域和 Edge 路由器通訊埠,以及應用程式用來存取 API Proxy 的網址。虛擬主機也會定義 API Proxy 是透過 HTTP 通訊協定存取,還是透過加密的 HTTPS 通訊協定存取。

在 Edge 新手上路流程中,您必須建立組織、環境和虛擬主機。Edge 提供 setup-org 指令,讓新使用者能更輕鬆地完成這項程序。

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

  • 虛擬主機的名稱,用於在 API Proxy 中參照。
  • 虛擬主機的路由器通訊埠。這些通訊埠通常從 9001 開始,每新增一個虛擬主機,通訊埠編號就會遞增一。
  • 虛擬主機的主機別名。通常是虛擬主機的 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 路由器會比較傳入要求的「Host」標頭與可用主機別名清單,藉此判斷要由哪個 API Proxy 處理要求。透過虛擬主機提出要求時,請指定與虛擬主機的主機別名相符的網域名稱,或指定路由器的 IP 位址和包含主機別名的 Host 標頭。

舉例來說,如果您在通訊埠 9001 上建立虛擬主機,並將主機別名設為 myapis.apigee.net,則透過該虛擬主機向 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'

    在這種形式中,您需要指定路由器的 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}

在虛擬主機中使用受保護的通訊埠

如要建立虛擬主機,將路由器繫結至受保護的通訊埠 (例如小於 1000 的通訊埠編號),則必須將路由器設為以有權存取這些通訊埠的使用者身分執行。根據預設,路由器會以「apigee」使用者身分執行,該使用者無權存取特殊權限通訊埠。

如要以其他使用者身分執行路由器,請按照下列步驟操作:

  1. 以 root 身分建立 /opt/apigee/etc/edge-router.d/RUN_USER.sh 檔案。
  2. 在檔案中新增下列項目:
    RUN_USER=root
    如果不想以 root 身分執行路由器,請指定有權存取通訊埠的使用者。
  3. 儲存檔案。
  4. 如果您指定的使用者不是 root,請將檔案擁有者變更為該使用者:
    > chown USER:USER /opt/apigee/etc/edge-router.d/RUN_USER.sh
  5. 重新啟動路由器:
    > /opt/apigee/apigee-service/bin/apigee-service edge-router restart