本文說明如何設定 Web 應用程式、行動後端或 API 應用程式的一般設定。 如需了解 Azure Functions,請參閱 Azure Functions 的應用程式設定參考。
附註
從 2024 年 6 月 1 日起,所有新建立的 App Service 應用程式都可以產生唯一的預設主機名稱,該名稱使用命名慣例 <app-name>-<random-hash>.<region>.azurewebsites.net
。 例如: myapp-ds27dh7271aah175.westus-01.azurewebsites.net
。 現有的應用程式名稱保持不變。
如需詳細資訊,請參閱有關使用唯一預設主機名稱建立 Web 應用程式的部落格文章。
在 Azure App Service 中,應用程式設定是作為環境變數傳遞至應用程式程式代碼的變數。 下列條件適用於應用程式設定:
- 應用程式設定名稱只能包含字母、數位(0-9)、句號(.)和底線(_)。
- 目標作業系統必須視需要逸出應用程式設定值中的特殊字元。
例如,若要使用 值 "pa$$w0rd\"
在 App Service for Linux 中設定環境變數,應用程式設定的字串應該是 "pa\$\$w0rd\\"
。
針對 Linux 應用程式和自訂容器,App Service 會使用 --env
旗標將應用程式設定傳遞至容器,以在容器中設定環境變數。 在這兩種情況下,它們會在應用程式啟動時插入您的應用程式環境中。 當您新增、移除或編輯應用程式設定時,App Service 會觸發應用程式重新開機。
針對 ASP.NET 和 ASP.NET Core 開發人員,在 App Service 中設定應用程式設定就像在 <appSettings>
、Web.config
或 appsettings.json
中設定它們。 App Service 中的值會覆蓋 Web.config
或 appsettings.json
中的值。 您可以在 Web.config
或 appsettings.json
中保存開發設定,例如本機 MySQL 密碼。 您可以在 App Service 中安全地保留生產秘密,例如 Azure MySQL 資料庫密碼。 當您在本機偵錯時,相同的程式碼會使用您的開發設定。 當您將它部署至 Azure 時,它會使用生產秘密。
其他程式語言的堆疊會在執行時將應用程式設定以環境變數的形式取得。 如需每個語言堆疊專屬的步驟,請參閱:
應用程式設定在儲存時一律會加密(靜態加密)。
在 Azure 入口網站中,搜尋並選取 [應用程式服務],然後選取您的應用程式。
在應用程式的左側功能表上,選取 [ 設定>環境變數]。 然後選取 [應用程式設定]。
應用程式設定的值會依預設隱藏在入口網站中,以取得安全性。 若要查看應用程式設定的隱藏值,請在 [ 值] 底下選取 [ 顯示值]。 若要查看所有應用程式設定的隱藏值,請選取 [顯示值]。
附註
若要在 Azure 入口網站中檢視此區段,需要讀寫使用者權限。 具有足夠許可權的 RBAC 內建角色為擁有者、參與者和網站參與者。 不允許讀取者角色單獨存取此頁面。
若要新增應用程式設定,請選取 [新增]。 若要編輯設定,請選取設定。
在對話方塊中,您可以將設定貼到目前的位置。
附註
在預設的 Linux App Service 或自訂 Linux 容器中,應用程式設定名稱中的任何巢狀 JSON 金鑰結構都必須以不同的方式設定金鑰名稱。 以雙底線 (__
) 取代任何冒號 (:
)。 以單底線(_
) 取代任何句號 (.
)。 例如, ApplicationInsights:InstrumentationKey
必須在 App Service 中針對金鑰名稱設定為 ApplicationInsights__InstrumentationKey
。
當您完成時,請選取 [ 套用]。 然後選取 環境變數 頁面上的 套用。
使用 az webapp config 應用程式設定集新增或編輯應用程式設定:
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings <setting-name>="<value>"
將<setting-name>
替換為設定的名稱。 將 <value>
取代為要指派給設定的值。
使用 az webapp config appsettings list 顯示所有設定及其值:
az webapp config appsettings list --resource-group <group-name> --name <app-name>
透過使用 az webapp config app settings delete 移除一個或多個設定:
az webapp config appsettings delete --resource-group <group-name> --name <app-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 在輸入哈希表中加入現有的應用程式設定。 例如:
# Get app configuration
$webapp=Get-AzWebApp -ResourceGroupName <group-name> -Name <app-name>
# Copy app settings to a new hash table
$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 檔案中。
# Save the settings
az webapp config appsettings list --resource-group <group-name> --name <app-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 大量編輯應用程式設定。
本節說明如何設定連接字串。
針對 ASP.NET 和 ASP.NET 核心開發人員,在 App Service 中設定連接字串就像在 中<connectionStrings>
Web.config
設定連接字串一樣。 您在 App Service 中設定的值會覆寫 Web.config
中的值。 您可以在 中 Web.config
保留開發設定,例如資料庫檔案。 您可以在 App Service 中安全地保留生產秘密,例如 SQL 資料庫認證。 當您在本機偵錯時,相同的程式碼會使用您的開發設定。 當您將它部署至 Azure 時,它會使用生產秘密。
對於其他語言堆疊,最好改用 應用程式設定 。 連接字串需要變數索引鍵中的特殊格式設定,才能存取值。
在某些情況下,您可能會想要使用連接字串,而不是 non-.NET 語言的應用程式設定。 只有在您在 App Service 應用程式中設定資料庫的連接字串時,特定的 Azure 資料庫類型才會與應用程式一起備份。 如需詳細資訊,請參閱建立自訂備份。 如果您不需要此自動備份,請使用應用程式設定。
在執行時間,連接字串會以環境變數的形式提供,前面加上下列連線類型:
- SQL Server:
SQLCONNSTR_
- MySQL:
MYSQLCONNSTR_
- Azure SQL:
SQLAZURECONNSTR_
- 自訂:
CUSTOMCONNSTR_
- PostgreSQL:
POSTGRESQLCONNSTR_
- Azure 通知中樞:
NOTIFICATIONHUBCONNSTR_
- Azure 服務總線:
SERVICEBUSCONNSTR_
- Azure 事件中樞:
EVENTHUBCONNSTR_
- Azure Cosmos DB:
DOCDBCONNSTR_
- Redis 緩存:
REDISCACHECONNSTR_
例如,可以存取名為 connectionstring1 的 MySQL 連接字串作為環境變數 MYSQLCONNSTR_connectionString1
。 如需了解每個語言技術堆疊的專屬步驟,請參閱:
連接字串在儲存時一律會加密(靜態加密)。
在 Azure 入口網站中,搜尋並選取 [應用程式服務],然後選取您的應用程式。
在應用程式的左側功能表上,選取 [ 設定>環境變數]。 然後選取 [連接字串]。
連接字串的值會依預設隱藏在入口網站中,以取得安全性。 若要查看連接字串的隱藏值,請在 [ 值] 底下選取 [顯示值]。 若要查看所有連接字串的隱藏值,請選取 [顯示值]。
若要新增連接字串,請選取 [新增]。 若要編輯連接字串,請選取連接字串。
在對話方塊中,您可以將連接字串貼到目前的位置。
當您完成時,請選取 [ 套用]。 然後在 [環境變數] 頁面上選取 [套用]。
使用 az webapp config connection-string set 新增或編輯應用程式設定:
az webapp config connection-string set --resource-group <group-name> --name <app-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 --resource-group <group-name> --name <app-name>
使用 az webapp config connection-string delete 移除一或多個連接字串:
az webapp config connection-string delete --resource-group <group-name> --name <app-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 列舉程式欄位的數值。 例如,針對 Azure SQL,指定 type="2"
。
此 Cmdlet 會將整個連接字串集替換為您指定的字串。 若要在現有集合內新增或編輯應用程式設定,請使用 Get-AzWebApp Cmdlet 在輸入哈希表中加入現有的應用程式設定。 例如:
# Get app configuration
$webapp=Get-AzWebApp -ResourceGroupName <group-name> -Name <app-name>
# Copy connection strings to a new hash table
$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 檔案中。
# 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 或 socket.io 設定。
AlwaysOn:如果您想要讓應用程式保持載入狀態,即使沒有流量也一樣開啟。
當 AlwaysOn 關閉時(預設值),應用程式會在 20 分鐘後卸除,而不需要任何傳入要求。 卸載的應用程式可能會因為新要求的準備時間,而造成高延遲。
當 AlwaysOn 開啟時,前端負載平衡器每隔五分鐘就會將要求傳送 GET
至應用程式根目錄。 連續 Ping 可防止應用程式卸載。
連續 WebJobs 或 CRON 運算式觸發的 WebJobs 都需要 Always On。
會話親和性:在多個實例部署中,請確定用戶端在會話存限期間路由傳送至相同的實例。 您可以為無狀態應用程式將此選項設定為 [關閉]。
工作階段親和性 Proxy:如果您的應用程式位於反向 Proxy 後方 (例如 Azure 應用程式閘道或 Azure Front Door),且您使用的是預設主機名稱,請予以開啟。 工作階段親和性 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 命令。
默認檔是出現在 App Service 應用程式根 URL 的網頁。 系統會使用清單中第一個相符的檔案。 如果應用程式使用以 URL 為基礎路由的模組而非提供靜態內容,則不需要預設文件。
設定預設檔案的設定僅適用於 Windows 應用程式。
- 在 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 應用程式,請取消選取 [目錄]。
選取 [確定]。 然後選取 [組態] 頁面上的 [儲存]。
下列範例會將根路徑 /
設定為適用於 Laravel 的 public
子目錄。 它也會在/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"
下列範例會將根路徑 /
設定為適用於 Laravel 的 public
子目錄。 它也會在/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
來參考您應用程式的根目錄。
- 引數。 腳本處理器的可選命令列參數。
選取 [確定]。 然後選取 [組態] 頁面上的 [儲存]。
相關內容