本文內容
注意
從 2024 年 6 月 1 日起,所有新建立的 App Service 應用程式都可以選擇使用命名慣例 <app-name>-<random-hash>.<region>.azurewebsites.net
來產生唯一的預設主機名稱。 現有的應用程式名稱將保持不變。
範例: myapp-ds27dh7271aah175.westus-01.azurewebsites.net
如需詳細資料,請參閱 App Service 資源的唯一預設主機名稱 。
本文說明如何設定 Web 應用程式、行動後端或 API 應用程式的常用設定。 如需了解 Azure Functions,請參閱 Azure Functions 的應用程式設定參考 。
注意
應用程式設定名稱只可包含字母、數字 (0-9)、句點 (".") 和底線 ("_")
目標 OS 必須視需要逸出應用程式設定值中的特殊字元
例如,若要在 App Service Linux 中使用值 "pa$$w0rd\"
來設定環境變數,應用程式設定的字串應該是:"pa\$\$w0rd\\"
在 App Service 中,應用程式設定是變數,會以環境變數形式傳遞至應用程式程式碼。 針對 Linux 應用程式和自訂容器,App Service 使用 --env
旗標將應用程式設定傳遞至容器,以在容器中設定環境變數。 在這兩種情況下,它們會在應用程式啟動時插入您的應用程式環境中。 當您新增、移除或編輯應用程式設定時,App Service 會觸發應用程式重新開機。
對於 ASP.NET 和 ASP.NET Core 開發人員,在 App Service 中設定應用程式設定,就像在 Web.config 或 appsettings.json 的 <appSettings>
中設定應用程式設定,但 App Service 中的值會覆寫 Web.config 或 appsettings.json 中的值。 您可以在 Web.config 或 appsettings.json 中保留開發設定 (例如本機 MySQL 密碼),但生產祕密 (例如 Azure MySQL 資料庫密碼) 儲存在 App Service 中才安全。 當您在本機偵錯時,相同的程式碼會使用您的開發設定,並在部署至 Azure 時使用您的生產秘密。
同理,其他語言堆疊會在執行時間取得應用程式設定作為環境變數。 如需了解語言堆疊特定步驟,請參閱:
應用程式設定一律會在儲存時加密 (待用加密)。
注意
如果您在應用程式設定中儲存秘密,請考慮使用 金鑰保存庫 參考 。 如果您的秘密是用來連線到後端資源,請考慮更安全的連線選項,完全不需要秘密。 如需詳細資訊,請參閱從 Azure App 服務 保護 Azure 服務和資料庫的連線。
在 Azure 入口網站 中,搜尋並選取 [應用程式服務] ,然後選取您的應用程式。
在應用程式的左側功能表中,選取 [環境變數] >[應用程式設定] 。
應用程式設定的值會依預設隱藏在入口網站中,以取得安全性。 若要查看應用程式設定的隱藏值,請選取其 [值] 欄位。 若要查看所有應用程式設定的隱藏值,請選取 [顯示值] 按鈕。
若要新增應用程式設定,請選取 [新增] 。 若要編輯設定,請按一下設定。
在對話方塊中,您可以將設定貼到目前的位置 。
注意
在預設 Linux app service 或自訂 Linux 容器中,應用程式設定名稱中的任何巢狀 JSON 金鑰結構 (像是 ApplicationInsights:InstrumentationKey
) 必須在 App Service 中設定為 ApplicationInsights__InstrumentationKey
作為金鑰名稱。 換句話說,任何 :
都應該以 __
(雙底線) 取代。 應用程式設定名稱中的任何句點都會取代為 _
(單一底線)。
完成後,選取 [套用] 。 別忘了回來在 [環境變數] 頁面中選取 [套用] 。
使用 az webapp config app settings set 新增或編輯應用程式設定:
az webapp config appsettings set --name <app-name> --resource-group <group-name> --settings <setting-name>="<value>"
將 <setting-name>
取代為設定的名稱,並將 <value>
取代為要指派給設定的值。
使用 az webapp config appsettings list 顯示所有設定及其值:
az webapp config appsettings list --name <app-name> --resource-group <group-name>
使用 az webapp config app settings delete 移除一或多個設定:
az webapp config appsettings delete --name <app-name> --resource-group <group-name> --setting-names {<setting-name1>,<setting-name2>,...}
使用 Set-AzWebApp 設定一或多個應用程式設定:
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings @{"<setting-name1>"="<value1>"; "<setting-name2>"="<value2>";...}
此 Cmdlet 會將整個應用程式設定集取代為您指定的設定。 若要在現有集合內新增或編輯應用程式設定,請使用 Get-AzWebApp Cmdlet,在輸入 Hashtable 中包含現有的應用程式設定。 例如:
# Get app configuration
$webapp=Get-AzWebApp -ResourceGroupName <group-name> -Name <app-name>
# Copy app settings to a new Hashtable
$appSettings = @{}
ForEach ($item in $webapp.SiteConfig.AppSettings) {
$appSettings[$item.Name] = $item.Value
}
# Add or edit one or more app settings
$appSettings['<setting-name1>'] = '<value1>'
$appSettings['<setting-name2>'] = '<value2>'
# Save changes
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings $appSettings
若要檢查應用程式設定是否為位置特定,請使用 Get-AzWebAppSlotConfigName :
Get-AzWebAppSlotConfigName -ResourceGroupName <group-name> -Name <app-name> | select AppSettingNames
若要建立一或多個應用程式設定位置特定,請使用 Set-AzWebAppSlotConfigName :
Set-AzWebAppSlotConfigName -ResourceGroupName <group-name> -Name <app-name> -AppSettingNames <setting-name1>,<setting-name2>,...
大量編輯應用程式設定
選取 [進階編輯] 按鈕。 編輯文字區域中的設定。 完成後,選取 [確定] 。 別忘了回來在 [環境變數] 頁面中選取 [套用] 。
應用程式設定具有下列 JSON 格式:
[
{
"name": "<key-1>",
"value": "<value-1>",
"slotSetting": false
},
{
"name": "<key-2>",
"value": "<value-2>",
"slotSetting": false
},
...
]
使用 JSON 檔案名稱執行 az webapp config app settings set 。
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings "@fileName.json"
提示
只有在 PowerShell 中才需要以引號包裝檔案名。
需要的檔案格式是設定的 JSON 陣列,其中位置設定欄位是選擇性的。 例如:
[
{
"name": "key1",
"slotSetting": false,
"value": "value1"
},
{
"name": "key2",
"value": "value2"
}
]
為求方便,您可以使用 az webapp config appsettings list 將現有的設定儲存到 JSON 檔案中。 下列範例可以在 Bash 中執行。
# Save the settings
az webapp config appsettings list --name <app-name> --resource-group <group-name> > settings.json
# Edit the JSON file
...
# Update the app with the JSON file
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings @settings.json
您無法使用 JSON 檔案搭配 Azure PowerShell 大量編輯應用程式設定。
注意
請考慮更安全的連線選項,完全不需要連線秘密。 如需詳細資訊,請參閱從 Azure App 服務 保護對 Azure 服務和資料庫的連線。
對於 ASP.NET 和 ASP.NET Core 開發人員,在 App Service 中設定連接字串就像在 Web.config 的 <connectionStrings>
中設定它們一樣,但您在 App Service 中設定的值會覆寫 Web.config 中的值。您可以將開發設定 (例如資料庫檔案) 安全地保留在 Web.config 中,並將生產秘密 (例如 SQL Database 登入資訊) 安全地保存在 App Service 中。 當您在本機偵錯時,相同的程式碼會使用您的開發設定,並在部署至 Azure 時使用您的生產秘密。
針對其他語言堆疊,最好改用應用程式設定 ,因為連接字串需要變數金鑰中的特殊格式設定才能存取值。
注意
在某種情況下,您可能想要使用連接字串,而不是非 .NET 語言的應用程式設定:只有 您在 App Service 應用程式中設定資料庫的連接字串時,才會備份特定 Azure 資料庫類型。 如需詳細資訊,請參閱建立自訂備份 。 如果您不需要此自動備份,請使用應用程式設定。
在執行時間,連接字串會以環境變數的形式提供,前面加上下列連線類型:
SQLServer:SQLCONNSTR_
MySQL: MYSQLCONNSTR_
SQLAzure:SQLAZURECONNSTR_
自訂:CUSTOMCONNSTR_
PostgreSQL:POSTGRESQLCONNSTR_
通知中樞:NOTIFICATIONHUBCONNSTR_
服務匯流排:SERVICEBUSCONNSTR_
事件中樞:EVENTHUBCONNSTR_
文件 DB:DOCDBCONNSTR_
Redis 快取:REDISCACHECONNSTR_
例如,可以存取名為 connectionstring1 的 MySQL 連接字串作為環境變數 MYSQLCONNSTR_connectionString1
。 如需了解語言堆疊特定步驟,請參閱:
連線設定一律會在儲存時加密 (待用加密)。
在 Azure 入口網站 中,搜尋並選取 [應用程式服務] ,然後選取您的應用程式。
在應用程式的左側功能表中,選取 [環境變數] >[連接字串] 。
連接字串的值會依預設隱藏在入口網站中,以取得安全性。 若要查看連接字串的隱藏值,請選取其 [值] 欄位。 若要查看所有連接字串的隱藏值,請選取 [顯示值] 按鈕。
若要新增連接字串,請選取 [新增] 。 若要編輯連接字串,請選取連接字串。
在對話方塊中,您可以將連接字串貼到目前的位置 。
完成後,選取 [套用] 。 別忘了回來在 [環境變數] 頁面中選取 [套用] 。
使用 az webapp config connection-string set 新增或編輯應用程式設定:
az webapp config connection-string set --name <app-name> --resource-group <group-name> --connection-string-type <type> --settings <string-name>='<value>'
將 <string-name>
取代為連接字串的名稱,並將 <value>
取代為要指派給連接字串的值。 如需了解 <type>
的可能值 (例如 SQLAzure
),請參閱 CLI 命令文件 。
使用 az webapp config connection-string list 顯示所有連接字串及其值:
az webapp config connection-string list --name <app-name> --resource-group <group-name>
使用 az webapp config connection-string delete 移除一或多個連接字串:
az webapp config connection-string delete --name <app-name> --resource-group <group-name> --setting-names {<string-name1>,<string-name2>,...}
使用 Set-AzWebApp 設定一或多個連接字串:
$PropertiesObject = @{
"<string-name1>" = @{
value="<connection-string1>";
type="<type>"};
"<string-name2>" = @{
value="<connection-string2>";
type="<type>"}
}
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -ConnectionStrings $PropertiesObject
每個連接字串皆包含一個名稱 (<string-name1>
)、一個值 (<connection-string1>
) 和類型,該類型是對應於 ConnectionStringType 列舉欄位其中一項數值。 例如針對 SQL Azure,請指定 type="2"
。
此 Cmdlet 會將整個連接字串集取代為您指定的設定。 若要在現有集合內新增或編輯應用程式設定,請使用 Get-AzWebApp Cmdlet,在輸入 Hashtable 中包含現有的應用程式設定。 例如:
# Get app configuration
$webapp=Get-AzWebApp -ResourceGroupName <group-name> -Name <app-name>
# Copy connection strings to a new hashtable
$connStrings = @{}
ForEach ($item in $webapp.SiteConfig.ConnectionStrings) {
$connStrings[$item.Name] = @{value=$item.ConnectionString; type=$item.Type.ToString()}
}
# Add or edit one or more connection strings
$connStrings['<string-name1>'] = @{value='<connection-string1>', type='<type>'}
$connStrings['<string-name2>'] = @{value='<connection-string2>', type='<type>'}
# Save changes
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -ConnectionStrings $connStrings
若要檢查連接字串是否為位置特定,請使用 Get-AzWebAppSlotConfigName :
Get-AzWebAppSlotConfigName -ResourceGroupName <group-name> -Name <app-name> | select ConnectionStringNames
若要建立一或多個連接字串位置特定,請使用 Set-AzWebAppSlotConfigName :
Set-AzWebAppSlotConfigName -ResourceGroupName <group-name> -Name <app-name> -ConnectionStringNames <string-name1>,<string-name2>,...
編輯大量連接字串
選取 [進階編輯] 按鈕。 編輯文字區域中的連接字串。 完成後,選取 [套用] 。 別忘了回來在 [環境變數] 頁面中選取 [套用] 。
連接字串具有下列 JSON 格式:
[
{
"name": "name-1",
"value": "conn-string-1",
"type": "SQLServer",
"slotSetting": false
},
{
"name": "name-2",
"value": "conn-string-2",
"type": "PostgreSQL",
"slotSetting": false
},
...
]
使用 JSON 檔案名稱執行 az webapp config connection-string set 。
az webapp config connection-string set --resource-group <group-name> --name <app-name> --settings "@fileName.json"
提示
只有在 PowerShell 中才需要以引號包裝檔案名。
需要的檔案格式是連接字串的 JSON 陣列,其中位置設定欄位是選擇性的。 例如:
[
{
"name": "name-1",
"value": "conn-string-1",
"type": "SQLServer",
"slotSetting": false
},
{
"name": "name-2",
"value": "conn-string-2",
"type": "PostgreSQL",
},
...
]
為求方便,您可以使用 az webapp config connection-string list ,將現有的連接字串儲存到 JSON 檔案中。 下列範例可以在 Bash 中執行。
# Save the connection strings
az webapp config connection-string list --resource-group <group-name> --name <app-name> > settings.json
# Edit the JSON file
...
# Update the app with the JSON file
az webapp config connection-string set --resource-group <group-name> --name <app-name> --settings @settings.json
您無法使用 JSON 檔案搭配 Azure PowerShell 大量編輯連接字串。
在 Azure 入口網站 中,搜尋並選取 [應用程式服務] ,然後選取您的應用程式。 在應用程式的左側功能表中,選取 [設定] >[一般設定] 。
您可以在這裡設定應用程式的一些常見設定。 有些設定會要求您擴大至較高的定價層 。
堆疊設定 :用來執行應用程式的軟體堆疊,包括語言和 SDK 版本。
針對 Linux 應用程式,您可以選取語言執行時間版本,並設定選擇性的啟動命令 或啟動命令檔。
平台設定 :讓您可設定裝載平台的設定,包括:
平台位元 :32 位元或 64 位元。 僅限 Windows 應用程式使用。
FTP 狀態 :僅允許 FTPS 或完全停用 FTP。
HTTP 版本 :設定為 2.0 以啟用 HTTPS/2 通訊協定支援。
WebSocket :例如適用於 ASP.NET SignalR Service 或 socket.io 。
Always On :即便沒有任何流量,也讓應用程式保持在載入狀態。 當沒有開啟 Always On 時 (預設),應用程式會在沒有任何傳入要求的 20 分鐘後卸載。 卸載的應用程式可能會因為新要求的準備時間,而造成高延遲。 開啟 Always On 時,前端負載平衡器每隔五分鐘會將 GET 要求傳送至應用程式根目錄。 請務必確保此要求收到 200 OK 回應,以確保已正確執行任何重新映像處理作業。 連續 Ping 可防止應用程式卸載。
連續 WebJobs 或使用 CRON 運算式觸發的 WebJobs 都需要 Always On。
會話親和性 :在多實例部署中,確定用戶端在會話存限期間路由傳送至相同的實例。 您可以為無狀態應用程式將此選項設定為 [關閉] 。
會話親和性 Proxy:如果您的應用程式位於反向 Proxy 後方(例如 Azure 應用程式閘道 或 Azure Front Door),而且您使用的是預設主機名,則可以開啟會話親和性 Proxy。 會話親和性 Cookie 的網域會與反向 Proxy 的轉送主機名一致。
僅 HTTPS :啟用時,所有 HTTP 流量都會重新導向至 HTTPS。
最低 TLS 版本 :請選取您應用程式需要的最低 TLS 加密版本。
偵錯 :為 ASP.NET 、ASP.NET Core 或 Node.js 應用程式啟用遠端偵錯。 這個選項會在 48 小時後自動關閉。
連入的用戶端憑證 :相互驗證 需要用戶端憑證。
您可以使用 az webapp config set 設定許多常見的可設定選項。 下列範例顯示可設定選項的子集。
az webapp config set --resource-group <group-name> --name <app-name> --use-32bit-worker-process [true|false] --web-sockets-enabled [true|false] --always-on [true|false]--http20-enabled --auto-heal-enabled [true|false] --remote-debugging-enabled [true|false] --number-of-workers
若要顯示現有設定,請使用 az webapp config show 命令。
您可以使用 Set-AzWebApp 設定許多常見的可設定選項。 下列範例顯示可設定選項的子集。
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -Use32BitWorkerProcess [True|False] -WebSocketsEnabled [True|False] -AlwaysOn [True|False] -NumberOfWorkers
若要顯示現有設定,請使用 Get-AzWebApp 命令。
此設定僅適用於 Windows 應用程式。
預設文件是顯示於 App Service 應用程式根 URL 上的網頁。 系統會使用清單中第一個相符的檔案。 如果應用程式使用以 URL 為基礎路由的模組而非提供靜態內容,則不需要預設文件。
在 Azure 入口網站 中,搜尋並選取 [應用程式服務] ,然後選取您的應用程式。
在應用程式的左側功能表中,選取 [設定] >[預設文件]。
若要新增預設文件,請選取 [新增文件] 。 若要移除預設文件,請選取下右側的 [刪除] 。
使用 az resource update 新增預設文件:
az resource update --resource-group <group-name> --resource-type "Microsoft.Web/sites/config" --name <app-name>/config/web --add properties.defaultDocuments <filename>
修改更新應用程式的 PowerShell 物件,以新增預設文件:
$webapp = Get-AzWebApp -ResourceGroupName <group-name> -Name <app-name>
$webapp.SiteConfig.DefaultDocuments.Add("<filename>")
Set-AzWebApp $webapp
將 URL 路徑對應至目錄
在預設情況下,App Service 從應用程式程式碼的根目錄啟動應用程式。 但是某些 Web 架構並非從根目錄開始。 例如,Laravel 從public
子目錄開始。 這類應用程式在 http://contoso.com/public
上可以存取,例如您通常會想要將 http://contoso.com
改為導向 public
目錄。 如果您的應用程式啟動檔案位於不同的資料夾中,或者您的存放庫有多個應用程式,您可以編輯或新增虛擬應用程式和目錄。
重要
實體路徑功能的虛擬目錄僅適用於 Windows 應用程式。
在 Azure 入口網站 中,搜尋並選取 [應用程式服務] ,然後選取您的應用程式。
在應用程式的左側功能表中,選取 [組態]>[路徑對應]
選取 [新增虛擬應用程式或目錄] 。
若要將虛擬目錄對應至實體路徑,請維持選取 [目錄] 核取方塊。 指定虛擬目錄和對應的相對 (實體) 路徑至網站根目錄 (D:\home
)。
若要將虛擬目錄標示為 Web 應用程式,請清除 [目錄] 核取方塊。
選取 [確定]。 別忘了在 [設定] 頁面中選取 [儲存] 。
以下範例會將根路徑 /
設定為 public
子目錄 (適用於 Laravel),並在 /app2
路徑中新增第二個虛擬應用程式。 若要執行,建立名為 json.txt
的檔案並加入下列內容。
[
{
"physicalPath"':' "site\\wwwroot\\public",
"preloadEnabled"':' false,
"virtualDirectories"':' null,
"virtualPath"':' "/"
},
{
"physicalPath"':' "site\\wwwroot\\app2",
"preloadEnabled"':' false,
"virtualDirectories"':' null,
"virtualPath"':' "/app2"
}
]
變更您資源的 <group-name>
和 <app-name>
,並執行下列命令。 在執行此命令時,請注意逸出字元。 如需逸出字元的詳細資訊,請參閱成功使用 Azure CLI 的秘訣 。
az resource update --resource-group <group-name> --resource-type Microsoft.Web/sites/config --name <app-name>/config/web --set properties.virtualApplications="@json.txt"
以下範例會將根路徑 /
設定為 public
子目錄 (適用於 Laravel),並在 /app2
路徑中新增第二個虛擬應用程式。 若要執行,請變更 <group-name>
和 <app-name>
。
$webapp=Get-AzWebApp -ResourceGroupName <group-name> -Name <app-name>
# Set default / path to public subdirectory
$webapp.SiteConfig.VirtualApplications[0].PhysicalPath= "site\wwwroot\public"
# Add a virtual application
$virtualApp = New-Object Microsoft.Azure.Management.WebSites.Models.VirtualApplication
$virtualApp.VirtualPath = "/app2"
$virtualApp.PhysicalPath = "site\wwwroot\app2"
$virtualApp.PreloadEnabled = $false
$webapp.SiteConfig.VirtualApplications.Add($virtualApp)
# Save settings
Set-AzWebApp $webapp
針對 Windows 應用程式,您可以自訂 IIS 處理常式對應及虛擬應用程式和目錄。 處理常式對應可讓您新增自訂指令碼處理器以處理特定副檔名的要求。
若要新增自訂處理常式:
在 Azure 入口網站 中,搜尋並選取 [應用程式服務] ,然後選取您的應用程式。
在應用程式的左側功能表中,選取 [組態]>[路徑對應] 。
選取 [新增處理常式對應] 。 設定處理常式,如下所示:
副檔名 。 您想要處理的副檔名,例如 *.php 或 handler.fcgi 。
指令碼處理器 。 您指令碼處理器的絕對路徑。 符合該副檔名的檔案要求,由指令碼處理器來處理。 使用路徑 D:\home\site\wwwroot
來參考您應用程式的根目錄。
引數 。 指令碼處理器的選用命令列引數。
選取 [確定]。 別忘了在 [設定] 頁面中選取 [儲存] 。
下一步