本文介绍如何为 Web 应用、移动后端或 API 应用配置通用设置。 对于 Azure Functions,请参阅 Azure Functions 的应用设置参考。
配置应用设置
在 Azure 应用服务中,应用设置是作为环境变量传递给应用程序代码的变量。 以下条件适用于应用设置:
- 应用设置名称只能包含字母、数字(0-9)、句点(.)和下划线(_)。
- 应用设置值中的特殊字符必须按照目标操作系统的要求进行转义。
例如,若要使用值 "pa$$w0rd\"在适用于 Linux 的应用服务中设置环境变量,应用设置的字符串应为 "pa\$\$w0rd\\"。
对于 Linux 应用和自定义容器,应用服务通过使用 --env 标志将应用程序设置传递给容器,并在容器中设置环境变量。 无论是这两种情况中的哪一种,它们都会在应用启动时注入到应用环境。 在添加、删除或编辑应用设置时,应用服务会触发应用重启。
对于 ASP.NET 和 ASP.NET Core 开发人员来说,在应用服务中配置应用设置就像在 <appSettings> 和 Web.config 或 appsettings.json中配置一样。 应用服务中的值将替代Web.config或appsettings.json中的值。 可以在 Web.config 或 appsettings.json 中保留开发设置,例如本地 MySQL 密码。 可以在应用服务中安全地保留生产机密,例如 Azure MySQL 数据库密码。 在本地调试时,同一代码使用您的开发设置。 将其部署到 Azure 时,会使用您的生产机密。
其他语言堆栈也会在运行时获取应用设置作为环境变量。 有关特定于每个语言堆栈的步骤,请参阅:
应用设置在存储时始终进行加密(静态加密)。
注意
如果在应用设置中存储机密,请考虑使用 Azure 密钥保管库 引用。 如果机密用于连接到后端资源,请考虑更安全且不需要机密的连接选项。 有关详细信息,请参阅从 Azure应用服务安全地连接到 Azure 服务和数据库。
- Azure 门户
- Azure CLI
- Azure PowerShell
在 Azure 门户中搜索并选择“应用服务” ,然后选择应用。
在应用的左侧菜单中,选择 “设置>环境变量”。 然后选择 “应用设置”。
默认情况下,出于安全考虑,应用设置值会隐藏在门户中。 若要查看应用设置的隐藏值,请在 “值”下选择“ 显示值”。 若要查看所有应用设置的隐藏值,请选择“ 显示值”。
注意
在 Azure 门户中查看此部分需要读取/写入用户权限。 具有足够权限的 RBAC 内置角色是“所有者”、“参与者”和“网站参与者”。 仅具有“读者”角色将无权访问此页面。
若要添加新的应用设置,请选择“添加”。 若要编辑设置,请选择该设置。
在对话框中,可将设置绑定到当前槽。
注意
在默认 Linux 应用服务或自定义 Linux 容器中,应用设置名称中的任何嵌套 JSON 密钥结构都需要以不同的方式为密钥名称配置。 将任何冒号(
:)替换为双下划线(__)。 将任何句点 (.) 替换为单个下划线 (_)。 例如,ApplicationInsights:InstrumentationKey需要在应用服务中配置为密钥名称ApplicationInsights__InstrumentationKey。完成后,选择应用。 选择“环境变量”页上的“应用”。
批量编辑应用设置
- Azure 门户
- Azure CLI
- Azure PowerShell
- 选择 “高级编辑”。
- 编辑文本区域中的设置。
- 完成后,选择“确定”。 选择“环境变量”页上的“应用”。
应用设置采用以下 JSON 格式:
[
{
"name": "<key-1>",
"value": "<value-1>",
"slotSetting": false
},
{
"name": "<key-2>",
"value": "<value-2>",
"slotSetting": false
},
...
]
配置连接字符串
本部分介绍如何配置连接字符串。
注意
考虑更安全且不需要连接机密的连接选项。 有关详细信息,请参阅从 Azure应用服务安全地连接到 Azure 服务和数据库。
对于 ASP.NET 和 ASP.NET 核心开发人员,在应用服务中设置连接字符串就像在 <connectionStrings> 中 Web.config设置连接字符串一样。 您在应用服务中设置的值将覆盖Web.config中的值。 您可以将开发设置(例如数据库文件)保存在Web.config中。 可以在应用服务中安全地保留生产机密,例如 SQL 数据库凭据。 在本地调试时,同一代码使用您的开发设置。 将其部署到 Azure 时,会使用您的生产机密。
对于其他语言堆栈,最好改用 应用设置 。 连接字符串需要变量键中的特殊格式才能访问值。
在某种情况下,对于非 .NET 语言,你可能会想要使用连接字符串而不是应用设置。 只有在应用服务应用中为数据库配置了连接字符串时,某些 Azure 数据库类型才会被备份。 有关详细信息,请参阅创建自定义备份。 如果不需要此自动备份,请使用应用设置。
在运行时,连接字符串可用作环境变量,其前缀为以下连接类型:
- SQL Server:
SQLCONNSTR_ - MySQL:
MYSQLCONNSTR_ - Azure SQL:
SQLAZURECONNSTR_ - 自定义:
CUSTOMCONNSTR_ - PostgreSQL:
POSTGRESQLCONNSTR_ - Azure 通知中心:
NOTIFICATIONHUBCONNSTR_ - Azure 服务总线:
SERVICEBUSCONNSTR_ - Azure 事件中心:
EVENTHUBCONNSTR_ - Azure Cosmos DB:
DOCDBCONNSTR_ - Redis 缓存:
REDISCACHECONNSTR_
注意
面向 PostgreSQL、通知中心、服务总线、事件中心、Azure Cosmos DB 和 Redis 缓存的 .NET 应用应将连接字符串设置为 Custom 作为 .NET EnvironmentVariablesConfigurationProvider 中已知问题的解决方法。
例如,可以使用环境变量 的形式访问名为 connectionstring1 的 MySQL 连接字符串。 有关特定于每个语言堆栈的步骤,请参阅:
连接字符串在存储时始终加密(静态加密)。
- Azure 门户
- Azure CLI
- Azure PowerShell
在 Azure 门户中搜索并选择“应用服务” ,然后选择应用。
在应用的左侧菜单中,选择 “设置>环境变量”。 然后选择 “连接字符串”。
默认情况下,出于安全考虑,连接字符串的值会隐藏在门户中。 若要查看连接字符串的隐藏值,请在 “值”下选择“ 显示值”。 若要查看所有连接字符串的隐藏值,请选择“ 显示值”。
若要添加新的连接字符串,请选择“添加”。 若要编辑某个连接字符串,请选择该连接字符串。
在对话框中,可将连接字符串绑定到当前槽。
完成后,选择应用。 选择“环境变量”页上的“应用”。
批量编辑连接字符串
- Azure 门户
- Azure CLI
- Azure PowerShell
- 选择 “高级编辑”。
- 在文本区域中编辑连接字符串。
- 完成后,选择应用。 不要忘记在“环境变量”页上选择“应用”。
连接字符串采用以下 JSON 格式:
[
{
"name": "name-1",
"value": "conn-string-1",
"type": "SQLServer",
"slotSetting": false
},
{
"name": "name-2",
"value": "conn-string-2",
"type": "PostgreSQL",
"slotSetting": false
},
...
]
配置语言堆栈设置
若要配置语言堆栈设置,请参阅以下资源:
配置常规设置
若要配置常规设置,请按照首选工具的步骤作。
- Azure 门户
- Azure CLI
- Azure PowerShell
在 Azure 门户中搜索并选择“应用服务” ,然后选择应用。
在应用的左侧菜单中,选择 “设置>配置”。 然后选择 “常规设置”。
在此处可以配置应用的某些常用设置。 某些设置要求纵向扩展到更高的定价层。
平台设置:配置托管平台的设置,包括:
平台:选择 32 位或 64 位。 仅适用于 Windows 应用。
FTP 状态:仅允许 FTPS 或完全禁用 FTP。
HTTP 版本:设置为 2.0 以启用对 HTTPS/2 协议的支持。
注意
大多数新式浏览器仅支持基于 TLS 的 HTTP/2 协议。 未加密的流量继续使用 HTTP/1.1。 若要确保客户端浏览器使用 HTTP/2 连接到应用,请保护自定义 DNS 名称。 有关详细信息,请参阅 在应用服务中使用 TLS/SSL 绑定为自定义 DNS 名称提供安全性。
Web 套接字配置 ASP.NET SignalR 或 socket.io。
Always On:如果您希望在没有流量时也能保持应用加载,请启用。
关闭 Always On (默认值),应用在 20 分钟后卸载,无需任何传入请求。 未加载的应用可能会因为存在预热时间而导致新请求的延迟过高。
启用 Always On 后,前端负载均衡器每五分钟向应用程序根发送一个
GET请求。 连续的 ping 会阻止卸载该应用。对于连续的 WebJobs 或使用 cron 表达式触发的 WebJobs,Always On 是必需的。
会话相关性:在多实例部署中,确保客户端在会话生存期路由到同一实例。 对于无状态应用程序,请将此选项设置为“关闭”。
会话关联代理:如果应用位于反向代理(如 Azure 应用程序网关或 Azure Front Door)后面,并且使用的是默认主机名,请启用该代理。 会话关联 Cookie 的域与反向代理中的转发主机名保持一致。
仅 HTTPS:如果要将所有 HTTP 流量重定向到 HTTPS,则启用。
最低 TLS 版本:选择应用所需的最低 TLS 加密版本。
注意
后量子混合密钥交换 由平台管理,没有应用级设置。 将最低TLS版本设置为1.3并不需要混合组
X25519MLKEM768。 最低 TLS 版本和最低密码套件设置均不会启用、禁用或要求该组。
调试:为 ASP.NET、ASP.NET Core 或 Node.js 应用启用远程调试。 此选项在 48 小时后会自动关闭。
传入客户端证书:需要在 相互身份验证中要求客户端证书。
还可以选择 “堆栈设置 ”选项卡来配置软件堆栈运行应用的设置,包括语言和 SDK 版本。 对于 Linux 应用,可以选择语言运行时版本并设置可选的启动命令。
配置默认文档
默认文档是显示在应用服务应用的根 URL 上的网页。 使用列表中第一个匹配文件。 如果应用使用的模块基于 URL 进行路由而不是提供静态内容,则无需使用默认文档。
配置默认文档的设置仅适用于 Windows 应用。
- Azure 门户
- Azure CLI
- Azure PowerShell
- 在 Azure 门户中搜索并选择“应用服务” ,然后选择应用。
- 在应用的左侧菜单中,选择“ 配置”。 然后选择 “默认文档”。
- 若要添加默认文档,请添加列表项,然后选择“ 应用”。 若要删除默认文档,请选择右侧的 “删除” 图标。
将 URL 路径映射到目录
默认情况下,应用服务从应用代码的根目录启动应用。 但某些 Web 框架不在根目录下启动。 例如,Laravel 在 public 子目录中启动。 例如,可在 http://contoso.com/public 中访问此类应用,但你通常需要改为将 http://contoso.com 定向到 public 目录。 如果应用的启动文件位于其他文件夹中,或者存储库包含多个应用程序,你可以编辑或添加虚拟应用程序和目录。
将虚拟目录映射到物理路径的功能仅在 Windows 应用中可用。
- Azure 门户
- Azure CLI
- Azure PowerShell
在 Azure 门户中搜索并选择“应用服务” ,然后选择应用。
在应用的左侧菜单中,选择 “设置>配置”。 然后选择 “路径映射”。
选择 “添加虚拟应用程序或目录”。 然后执行以下操作之一:
- 若要将虚拟目录映射到物理路径,请选择 “目录”。 指定虚拟目录,以及网站根目录相应的相对(物理)路径 (
D:\home)。 - 若要将虚拟目录标记为 Web 应用程序,请选择 “虚拟应用程序”。
- 若要将虚拟目录映射到物理路径,请选择 “目录”。 指定虚拟目录,以及网站根目录相应的相对(物理)路径 (
选择 “添加 ”以保存。
配置处理程序映射
对于 Windows 应用,可以自定义 IIS 处理程序映射和虚拟应用程序与目录。 使用处理程序映射可以添加自定义脚本处理程序用于处理特定文件扩展名的请求。
添加自定义处理程序:
在 Azure 门户中搜索并选择“应用服务” ,然后选择应用。
在应用的左侧菜单中,选择 “设置>配置”。 然后选择 “路径映射”。
选择 “添加处理程序映射”。 按如下所述配置处理程序:
-
扩展名。 要处理的文件扩展名,例如
*.php或handler.fcgi。 -
脚本处理程序。 脚本处理程序的绝对路径。 脚本处理器处理与文件扩展名匹配的文件的请求。 使用路径
D:\home\site\wwwroot表示应用的根目录。 - 参数。 脚本处理程序的可选命令行参数
-
扩展名。 要处理的文件扩展名,例如
选择 “添加 ”以保存。