App Service 環境網路
App Service 環境是裝載 Windows 和 Linux 容器、Web 應用程式、API 應用程式、邏輯應用程式和函式應用程式的 Azure App 服務單一租用戶部署。 當您安裝 App Service 環境時,您會挑選您想要部署的 Azure 虛擬網路。 所有輸入和輸出應用程式流量都位於您指定的虛擬網路內。 您部署至虛擬網路中的單一子網路,而其他任何項目都無法部署到該子網路中。
注意
本文是關於搭配 v2 App Service 隔離式方案一起使用的 App Service 環境 v3。
子網路需求
您必須將子網路委派給 Microsoft.Web/hostingEnvironments
,且子網路必須為空白。
子網路的大小可以影響 App Service 環境內 App Service 方案執行個體的調整限制。 針對生產規模,建議您為子網路提供 /24
位址空間 (256 個位址)。 如果您打算在我們的 App Service 環境中調整接近 200 個執行個體的容量上限,並規劃經常向上/向下調整作業,建議您為子網路提供 /23
位址空間 (512 個位址)。
如果您使用較小的子網路,請注意下列限制:
- 任何特定子網路都會有五個保留供管理用途的位址。 除了管理位址之外,App Service 環境也會根據設定和負載,動態調整支援的基礎結構,並使用介於 7 到 27 個位址。 您可以將其餘位址用於 App Service 方案中的執行個體。 子網路的大小下限是
/27
位址空間 (32 個位址)。 - 針對 App Service 環境中使用的任何 App Service 方案 OS/SKU 組合,例如 I1v2 Windows,每 20 個作用中的執行個體會建立一個待命執行個體。 待命執行個體也需要 IP 位址。
- 在 App Service 環境中向上/向下調整 App Service 方案時,App Service 方案所使用的 IP 位址數量會在調整作業完成時暫時加倍。 在取消佈建現有執行個體之前,新執行個體必須完全運作。
- 平台升級需要免費的 IP 位址,以確保升級可以發生,而不會中斷輸出流量。
- 擴大、縮小或作業完成之後,可能需要一段時間才能釋出 IP 位址。 在罕見的情況下,此作業最多可能需要 12 個小時。
- 如果您用盡子網路內的位址,則無法在 App Service 環境中擴增 App Service 方案。 另一個可能性是,如果 Microsoft 無法調整支援基礎結構,您會在大量流量負載期間遇到延遲增加。
注意
Windows 容器會針對每個 App Service 方案執行個體的每個應用程式使用額外的 IP 位址,而且您必須據以調整子網路的大小。 若您的 App Service 環境具有例如 2 項 Windows 容器 App Service 方案,每一個方案都有 25 個執行個體,且分別執行 5 個應用程式,您將需要 300 個 IP 位址及其他位址來支援水平 (放大/縮小) 縮放。
範例計算:
針對每個 App Service 方案執行個體,您需要: 5 個 Windows 容器應用程式 = 5 個 IP 位址, 每個 App Service 方案執行個體 1 個 IP 位址,5 + 1 = 6 個 IP 位址
共有 25 個執行個體: 每個 App Service 方案 6 x 25 = 150 個 IP 位址
因為您有 2 個 App Service 方案,2 x 150 = 300 個 IP 位址。
地址
App Service 環境建立時具有下列網路資訊:
位址類型 | 描述 |
---|---|
App Service 環境虛擬網路 | 部署的虛擬網路。 |
App Service 環境子網路 | 部署的子網路。 |
網域尾碼 | 應用程式所使用的預設網域尾碼。 |
自訂網域尾碼 | (選用) 應用程式所使用的自訂網域尾碼。 |
虛擬 IP (VIP) | 使用的 VIP 類型。 這兩個可能的值為內部和外部。 |
輸入位址 | 輸入位址是觸及您的應用程式的位址。 如果您有內部 VIP,它是您的 App Service 環境子網路中的位址。 如果位址為外部,則為公開位址。 |
背景工作角色輸出位址 | 應用程式會在對網際網路進行輸出呼叫時,使用此位址或這些位址。 |
平台輸出位址 | 對網際網路進行輸出呼叫時,平台會使用此位址。 例如,如果未使用私人端點,則會從 Key Vault 提取自訂網域尾碼的憑證。 |
您可以在入口網站的 IP 位址部分中找到詳細資料,如下列螢幕擷取畫面所示:
當您在 App Service 環境中調整 App Service 方案時,您會使用子網路以外的更多位址。 您使用的位址數目會根據您擁有的 App Service 方案執行個體數目和多少流量而不同。 App Service 環境中的應用程式在子網路中沒有專用位址。 子網路中應用程式所使用的特定位址會隨著時間而變更。
攜帶自己的輸入位址
您可以將自己的輸入位址帶到 App Service 環境。 如果您使用內部 VIP 建立 App Service 環境,您可以在子網路中指定靜態 IP 位址。 如果您使用外部 VIP 建立 App Service 環境,您可以指定公用 IP 位址的資源識別碼,以使用自己的 Azure 公用 IP 位址。 以下是攜帶自己輸入位址的限制:
- 對於具有外部 VIP 的 App Service 環境,Azure 公用 IP 位址資源必須位於與 App Service 環境相同的訂用帳戶中。
- 建立 App Service 環境之後,您無法變更此輸入位址。
連接埠和網路限制
若要讓應用程式接收流量,請確定輸入網路安全性群組 (NSG) 規則允許 App Service 環境子網路接收來自所需連接埠的流量。 除了您想要接收流量的任何連接埠之外,您應該確定 Azure Load Balancer 能夠連線到連接埠 80 上的子網路。 這個連接埠會用於內部虛擬機器的健康情況檢查。 您仍然可以控制從虛擬網路到子網路的連接埠 80 流量。
注意
由於 HTTP 連線持續性,對 NSG 規則的變更最多可能需要 14 天才會生效。 如果您進行會封鎖平台/管理流量的變更,最多可能需要 14 天才會看到影響。
十分建議設定以下輸入 NSG 規則:
來源 / 目的地連接埠 | 方向 | 來源 | Destination | 目的 |
---|---|---|---|---|
* / 80,443 | 傳入 | VirtualNetwork | App Service 環境子網路範圍 | 允許應用程式流量和內部健康情況 Ping 流量 |
App Service 環境運作的最低需求如下:
來源 / 目的地連接埠 | 方向 | 來源 | Destination | 目的 |
---|---|---|---|---|
* / 80 | 傳入 | AzureLoadBalancer | App Service 環境子網路範圍 | 允許內部健康情況 Ping 流量 |
如果您使用最低必要規則,則可能需要一或多個規則給應用程式流量。 如果您使用任何部署或偵錯選項,也必須允許此流量流向 App Service 環境子網路。 這些規則的來源可以是虛擬網路,或一或多個特定的用戶端 IP 或 IP 範圍。 目的地一律是 App Service 環境子網路範圍。
連接埠 80 上的內部健康情況 Ping 流量會在負載平衡器和內部伺服器之間隔離。 沒有外部流量可連線到健康情況 Ping 端點。
一般應用程式存取埠輸入如下所示:
使用 | 連接埠 |
---|---|
HTTP/HTTPS | 80、443 |
FTP/FTPS | 21、990、10001-10020 |
Visual Studio 遠端偵錯 | 4022, 4024, 4026 |
Web Deploy 服務 | 8172 |
注意
針對 FTP 存取,即便您想禁止連接埠 21 的標準 FTP,您仍需允許連接埠 21 上從 LoadBalancer 到 App Service 環境子網路範圍的流量,因為這是針對 FTP 服務的內部健康情況偵測流量。
網路路由
您可以設定路由表,不受限制。 您可以將所有輸出應用程式流量從 App Service 環境通道傳送到輸出防火牆裝置,例如 Azure 防火牆。 在此情節下,您唯一需要擔心的是您的應用程序相依性。
應用程式相依性包括應用程式在執行階段期間所需的端點。 除了應用程式正在呼叫的 API 和服務之外,您也可以衍生端點,例如憑證撤銷清單 (CRL) 檢查端點和身分識別/驗證端點 (例如 Microsoft Entra ID)。 如果您在 App Service 中使用持續部署,可能也需要根據類型和語言來允許端點。 特別是針對 Linux 持續部署,您必須允許 oryx-cdn.microsoft.io:443
。
您可以將 Web 應用程式防火牆裝置 (例如 Azure 應用程式閘道) 放在輸入流量之前。 這麼做可讓您在 App Service 環境上公開特定應用程式。
您的應用程式會使用其中一個預設輸出位址,將輸出流量傳送至公用端點。 如果您想要在 App Service 環境上自訂應用程式的輸出位址,可以將 NAT 閘道新增至子網路。
注意
App Service 環境 v3 支援輸出 SMTP 連線 (連接埠 25)。 支援性取決於部署虛擬網路所在訂用帳戶上的設定。 針對在 1 之前建立的虛擬網路/子網路。 2022 年 8 月,您必須起始虛擬網路/子網路的暫存組態變更,才能從訂用帳戶同步設定。 例如,新增暫存子網路、暫時建立 NSG 的關聯/解除關聯,或暫時設定服務端點。 如需詳細資訊並進行疑難排解,請參閱 針對 Azure 中的輸出 SMTP 連線能力問題進行疑難排解。
私人端點
若要為裝載於 App Service 環境的應用程式啟用私人端點,您必須先在 App Service 環境等級啟用此功能。
您可以透過 Azure 入口網站加以啟動。 在 App Service 環境設定窗格中,開啟設定 Allow new private endpoints
。
或者也可透過下列 CLI 啟用:
az appservice ase update --name myasename --allow-new-private-endpoint-connections true
如需私人端點和 Web 應用程式的詳細資訊,請參閱 Azure Web 應用程式私人端點
DNS
下列各節說明套用輸入和輸出 App Service 環境的 DNS 考量和組態。 這些範例會從 Azure 公用雲端使用網域後綴 appserviceenvironment.net
。 如果您在使用 Azure Government 等其他雲端,則必須使用其各自的網域後綴。 針對 App Service 環境網域,網站名稱會因為 DNS 限制而截斷為 40 個字元。 如果您有位置,則位置名稱會截斷為 19 個字元。
App Service 環境的 DNS 設定
如果您的 App Service 環境是以外部 VIP 建立的,您的應用程式就會自動置於公用 DNS 中。 如果您的 App Service 環境是以內部 VIP 建立的,當您建立 App Service 環境時,就有兩個選項。 如果您選取自動設定 Azure DNS 私人區域,則會在您的虛擬網路中設定 DNS。 如果您選擇手動設定 DNS,則需要使用您自己的 DNS 伺服器,或設定 Azure DNS 私人區域。 若要尋找輸入位址,請前往 App Service 環境入口網站並選取 [IP 位址]。
如果您想要使用自己的 DNS 伺服器,請新增下列記錄:
- 建立
<App Service Environment-name>.appserviceenvironment.net
的區域。 - 在該區域中建立 A 記錄,此記錄會將 * 指向您的 App Service 環境所使用的輸入 IP 位址。
- 在該區域中建立 A 記錄,此記錄會將 @ 指向您的 App Service 環境所使用的輸入 IP 位址。
- 在
<App Service Environment-name>.appserviceenvironment.net
中建立名為scm
的區域。 - 在
scm
區域中建立 A 記錄,此記錄會將 * 指向您的 App Service 環境私人端點所使用的 IP 位址。
若要在 Azure DNS 私人區域中設定 DNS:
- 建立名為
<App Service Environment-name>.appserviceenvironment.net
的 Azure DNS 私人區域。 - 在該區域中建立一個將 * 指向輸入 IP 位址的 A 記錄。
- 在該區域中建立一個將 @ 指向輸入 IP 位址的 A 記錄。
- 在該區域中建立一個將 *.scm 指向輸入 IP 位址的 A 記錄。
除了建立應用程式時提供的預設網域之外,您也可以將自訂網域新增至應用程式。 您可以在應用程式上設定自訂網域名稱,而不會進行任何驗證。 如果您使用自訂網域,必須確定已設定 DNS 記錄。 您可以遵循上述指引以設定自訂網域名稱的 DNS 區域和記錄 (只要將預設網域名稱取代為自訂網域名稱即可)。 自訂網域名稱適用於應用程式要求,但不適用於 scm
網站。 scm
網站只能在 <appname>.scm.<asename>.appserviceenvironment.net 上使用。
FTP 存取的 DNS 設定
若要明確存取內部負載平衡器 (ILB) App Service 環境 v3,需確定已設定 DNS。 請使用下列設定來設定 Azure DNS 私人區域或對等的自訂 DNS:
- 建立名為
ftp.appserviceenvironment.net
的 Azure DNS 私人區域。 - 在該區域中建立一個將
<App Service Environment-name>
指向輸入 IP 位址的 A 記錄。
除了設定 DNS 之外,您也需要在 App Service 環境設定 和 應用程式等級 啟用它。
App Service 環境的 DNS 設定
App Service 環境中的應用程式會使用虛擬網路設定的 DNS。 如果您希望某些應用程式使用不同的 DNS 伺服器,可以手動設定毎個應用程式的 WEBSITE_DNS_SERVER
和 WEBSITE_DNS_ALT_SERVER
。 WEBSITE_DNS_ALT_SERVER
設定次要 DNS 伺服器。 只有當主要 DNS 伺服器沒有回應時,才會使用次要 DNS 伺服器。