於 Azure 容器應用程式中輸入
Azure 容器應用程式可讓您藉由啟用輸入,向公用網路、虛擬網路 (VNET) 和其他容器應用程式公開您的容器應用程式。 輸入設定會透過一組規則強制執行,以控制外部和內部流量到容器應用程式的路由傳送。 啟用輸入時,您不需要建立 Azure Load Balancer、公用 IP 位址或任何其他 Azure 資源來啟用內送的 HTTP 要求或 TCP 流量。
輸入支援:
此輸入設定範例顯示兩個修訂版本之間的輸入分割:
如需設定詳細資料,請參閱設定輸入。
外部和內部輸入
啟用輸入時,您可以選擇兩種類型的輸入:
- 外部:接受來自公用網際網路和容器應用程式內部環境的流量。
- 內部:只允許來自容器應用程式環境的內部存取。
您可以使用不同的輸入設定來設定環境中的每一個容器應用程式。 例如,在具有多個微服務應用程式的方案中,若要提高安全性,您可能會有單一容器應用程式接收公用要求,並將要求傳送至背景服務。 在此案例中,您可使用外部輸入來設定對外公開的容器應用程式,並使用內部輸入來設定內部使用的容器應用程式。
通訊協定類型
容器應用程式支援兩種輸入通訊協定:HTTP 和 TCP。
HTTP
啟用 HTTP 輸入後,您的容器應用程式具有下列特性:
- 支援 TLS 終止
- 支援 HTTP/1.1 和 HTTP/2
- 支援 WebSocket 和 gRPC
- HTTPS 端點一律使用 TLS 1.2 或 1.3,並在輸入點終止
- 端點一律會公開連接埠 80 (針對 HTTP) 和 443 (針對 HTTPS)
- 根據預設,傳送至連接埠 80 的 HTTP 要求會自動重新導向至 443 的 HTTPS
- 完整網域名稱 (FQDN)
- 要求逾時為 240 秒
HTTP 標頭
HTTP 輸入會新增標頭,以將用戶端要求的相關中繼資料傳送至您的容器應用程式。 例如,X-Forwarded-Proto
標頭用於識別用戶端與容器應用程式服務連線所使用的通訊協定。 下表列出與容器應用程式中輸入相關的 HTTP 標頭:
標頭 | 描述 | 值 |
---|---|---|
X-Forwarded-Proto |
用戶端用來與容器應用程式服務連線的通訊協定。 | http 或 https |
X-Forwarded-For |
傳送要求的用戶端 IP 位址。 | |
X-Forwarded-Host |
用戶端用來與容器應用程式服務連線的主機名稱。 | |
X-Forwarded-Client-Cert |
如果已設定 clientCertificateMode ,則為用戶端憑證。 |
摘要、憑證和鏈結的分號分隔清單。 例如:Hash=....;Cert="...";Chain="..."; |
TCP
容器應用程式支援 HTTP 或 HTTPS 以外的 TCP 型通訊協定。 例如,您可以使用 TCP 輸入來公開使用 Redis 通訊協定的容器應用程式。
啟用 TCP 輸入後,您的容器應用程式具有下列特性:
- 其他相同環境中的容器應用程式是否透過其名稱 (由容器應用程式資源中的
name
屬性定義) 和公開連接埠號碼予以存取。 - 如果輸入設定為
external
,可透過其完整功能變數名稱 (FQDN) 從外部存取和公開的埠號碼。
附加 TCP 連接埠
除了容器應用程式的主要 HTTP/TCP 連接埠之外,您還可以公開其他 TCP 連接埠,以啟用在多個埠上接受 TCP 連線的應用程式。
注意
若要使用此功能,您必須擁有容器應用程式 CLI 延伸模組。 若要安裝最新版的容器應用程式 CLI 延伸模組,請執行 az extension add -n containerapp
。
下列適用於其他 TCP 通訊埠:
- 只有在應用程式本身設定為外部,且容器應用程式使用自訂 VNet 時,其他 TCP 連接埠才能是外部通訊埠。
- 任何外部公開的其他 TCP 通訊埠在整個容器應用程式環境中皆必須是唯一。 這包括所有外部額外的 TCP 通訊埠、外部主要 TCP 通訊埠,以及內建 HTTP 輸入所使用的 80/443 連接埠。 如果其他連接埠是內部連接埠,則多個應用程式可以共用相同的連接埠。
- 如果未提供公開的連接埠,公開的連接埠預設會符合目標連接埠。
- 每個目標連接埠都必須唯一,而且相同的目標連接埠無法在不同的公開連接埠上公開。
- 每個應用程式最多有五個額外的埠。 如果需要其他連接埠,請開啟支援要求。
- 只有主要輸入連接埠支援內建 HTTP 功能,例如 CORS 和工作階段親和性。 在其他的 TCP 連接埠最上方執行 HTTP 時,不支援這些內建功能。
如需如何為容器應用程式啟用其他連接埠的詳細資訊,請造訪如何撰寫輸入文章。
網域名稱
您可以採用下列方法來存取應用程式:
- 預設的完整網域名稱 (FQDN):容器應用程式環境中的每個應用程式都會根據環境的 DNS 後綴自動獲派 FQDN。 若要自訂環境的 DNS 後綴,請參閱自定義環境 DNS 後綴 (部分機器翻譯)。
- 自訂網域名稱:您可以為容器應用程式環境設定自訂 DNS 網域。 如需更多資訊,請參閱自定義網域名稱和憑證 (部分機器翻譯)。
- 應用程式名稱:您可以使用應用程式名稱在相同環境中的應用程式之間進行通訊。
若要取得應用程式的 FQDN,請參閱位置。
IP 限制
容器應用程式支援輸入的 IP 限制。 您可以建立規則來設定容器應用程式允許或拒絕存取的 IP 位址。 如需詳細資訊,請參閱設定 IP 限制。
驗證
Azure 容器應用程式提供內建驗證和授權功能,保護您的外部輸入啟用容器應用程式。 如需詳細資訊,請參閱 Azure 容器應用程式中的驗證和授權 (部分機器翻譯)。
您可以設定應用程式以支援用戶端憑證 (mTLS) 進行驗證和流量加密。 如需詳細資訊,請參閱設定用戶端通訊協定。
如需如何使用對等計算環境層級網路加密的詳細資訊,請參閱網路概觀。
流量分割
容器應用程式可讓您分割使用中修訂之間的傳入流量。 當您定義分割規則時,您會指派傳入流量的百分比以前往不同修訂。 如需詳細資訊,請參閱流量分割。
工作階段親和性
工作階段親和性 (也稱為黏性工作階段) 是一項功能,可讓您將所有 HTTP 要求從用戶端路由傳送至相同的容器應用程式複本。 此功能適用於需要相同複本一致連線的具狀態應用程式。 如需詳細資訊,請參閱工作階段親和性。
跨原點資源共用 (CORS)
依預設,這會封鎖透過瀏覽器從頁面到與不符合頁面來源網域的網域進行任何要求。 為避免部署至容器應用程式的服務有此限制,您可以啟用跨來源資源分享 (CORS)。
如需詳細資訊,請參閱設定 Azure 容器應用程式中的 CORS。