你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

配置应用服务应用

本文介绍如何配置 Web 应用、移动后端或 API 应用的常用设置。 对于 Azure Functions,请参阅 Azure Functions 的应用设置参考

配置应用设置

在应用服务中,应用设置是作为环境变量传递给应用程序代码的变量。 对于 Linux 应用和自定义容器,应用服务使用 --env 标志将应用设置传递到容器,以在容器中设置环境变量。 无论是这两种情况中的哪一种,它们都会在应用启动时注入到应用环境。 在添加、删除或编辑应用设置时,应用服务会触发应用重启。

对于 ASP.NET 和 ASP.NET Core 开发人员而言,在应用服务中设置应用设置类似于在 Web.config 或 appsettings.json 中的 <appSettings> 内进行设置,但应用服务中的值会替代 Web.config 或 appsettings.json 中的值。 可以在 Web.config 或 appsettings.json 中保留开发设置(例如本地 MySQL 密码),并在应用服务中安全地保留生产机密(例如 Azure MySQL 数据库密码) 。 相同的代码在本地调试时使用开发设置,部署到 Azure 时使用生产机密。

同样,其他语言堆栈也会在运行时获取应用设置作为环境变量。 有关特定的语言堆栈步骤,请参阅:

应用程序设置在存储时始终进行加密(静态加密)。

注意

也可以使用 Key Vault 引用Key Vault 解析应用设置。

  1. Azure 门户中搜索并选择“应用服务” ,然后选择应用。

    搜索应用服务

  2. 在应用的左侧菜单中,选择“配置”>“应用程序设置”。

    应用程序设置

    默认情况下,出于安全考虑,应用设置值会隐藏在门户中。 若要查看某项应用设置的隐藏值,请单击它的“值”字段。 若要查看所有应用设置的隐藏值,请单击“显示值”按钮。

  3. 若要添加新的应用设置,请单击“新建应用程序设置”。 若要编辑设置,请单击右侧的“编辑”按钮。

  4. 在对话框中,可将设置绑定到当前槽

    应用设置名称不能包含句点 (.)。 如果应用设置包含句点,则将该句点替换为容器中的下划线。

    注意

    在默认 Linux 应用服务或自定义 Linux 容器中,需要在应用服务中将应用设置名称(如 ApplicationInsights:InstrumentationKey)中的任何嵌套 JSON 密钥结构配置为密钥名称的 ApplicationInsights__InstrumentationKey。 换而言之,应将任何 : 替换为 __(双下划线)。

  5. 完成后,单击“更新”。 别忘了返回“配置”页并单击“保存”。

批量编辑应用设置

单击“高级编辑”按钮。 编辑文本区域中的设置。 完成后,单击“更新”。 别忘了返回“配置”页并单击“保存”。

应用设置采用以下 JSON 格式:

[
  {
    "name": "<key-1>",
    "value": "<value-1>",
    "slotSetting": false
  },
  {
    "name": "<key-2>",
    "value": "<value-2>",
    "slotSetting": false
  },
  ...
]

在应用设置中配置数组

你还可以在应用设置中配置数组,如下表所示。

应用设置名称 应用设置值
MY_ENV_VAR ['entry1', 'entry2', 'entry3']

配置连接字符串

Azure 门户中搜索并选择“应用服务” ,然后选择应用。 在应用的左侧菜单中,选择“配置”>“应用程序设置”。

应用程序设置

对于 ASP.NET 和 ASP.NET Core 开发人员而言,在应用服务中设置连接字符串类似于在 Web.config 中的 <connectionStrings> 内进行设置,但应用服务中设置的值会替代 Web.config 中的值。可将开发设置(例如,数据库文件)保留在 Web.config 中,并将生产机密(例如,SQL 数据库凭据)安全保留在应用服务中。 相同的代码在本地调试时使用开发设置,部署到 Azure 时使用生产机密。

对于其他语言堆栈,最好是改用应用设置,因为连接字符串需要在变量键中使用特殊的格式才能访问值。

注意

有一种情况你需要使用连接字符串而不是非 .NET 语言的应用设置:仅当你在应用服务应用中为数据库配置连接字符串时,某些 Azure 数据库类型才会与应用一起备份。 有关详细信息,请参阅创建自定义备份。 如果不需要这种自动化备份,请使用应用设置。

在运行时,连接字符串可用作环境变量,其前缀为以下连接类型:

  • SQLServer:SQLCONNSTR_
  • MySQL: MYSQLCONNSTR_
  • SQLAzure:SQLAZURECONNSTR_
  • 自定义:CUSTOMCONNSTR_
  • PostgreSQL:POSTGRESQLCONNSTR_

例如,可以使用环境变量 MYSQLCONNSTR_connectionString1 的形式访问名为 connectionstring1 的 MySQL 连接字符串。 有关特定的语言堆栈步骤,请参阅:

连接字符串在存储时始终进行加密(静态加密)。

注意

也可以使用 Key Vault 引用Key Vault 解析连接字符串。

  1. Azure 门户中搜索并选择“应用服务” ,然后选择应用。

    搜索应用服务

  2. 在应用的左侧菜单中,选择“配置”>“应用程序设置”。

    应用程序设置

    默认情况下,出于安全考虑,连接字符串的值会隐藏在门户中。 若要查看某个连接字符串的隐藏值,请单击其“值”字段。 若要查看所有连接字符串的隐藏值,请单击“显示值”按钮。

  3. 若要添加新的连接字符串,请单击“新建连接字符串”。 若要编辑连接字符串,请单击右侧的“编辑”按钮。

  4. 在对话框中,可将连接字符串绑定到当前槽

  5. 完成后,单击“更新”。 别忘了返回“配置”页并单击“保存”。

批量编辑连接字符串

单击“高级编辑”按钮。 在文本区域中编辑连接字符串。 完成后,单击“更新”。 别忘了返回“配置”页并单击“保存”。

连接字符串采用以下 JSON 格式:

[
  {
    "name": "name-1",
    "value": "conn-string-1",
    "type": "SQLServer",
    "slotSetting": false
  },
  {
    "name": "name-2",
    "value": "conn-string-2",
    "type": "PostgreSQL",
    "slotSetting": false
  },
  ...
]

配置语言堆栈设置

配置常规设置

Azure 门户中搜索并选择“应用服务” ,然后选择应用。 在应用的左侧菜单中,选择“配置”>“常规设置”。

常规设置

在此处可以配置应用的某些常用设置。 某些设置要求纵向扩展到更高的定价层

  • 堆栈设置:用于运行应用的软件堆栈,包括语言和 SDK 版本。

    对于 Linux 应用,可选择语言运行时版本,并设置启动命令文件或可选的启动命令。

    Linux 容器的常规设置

  • 平台设置:用于配置托管平台的设置,包括:

    • FTP 状态:仅允许 FTPS 或完全禁用 FTP。

    • 位数:32 位或 64 位。 仅适用于 Windows 应用。

    • WebSocket 协议:例如,ASP.NET SignalRsocket.io

    • Always On:即使没有流量,也保持应用的加载状态。 如果未打开 Always On(默认),该应用会在 20 分钟后卸载,无需任何传入请求。 卸载的应用可能会因为存在预热时间而导致新请求的延迟过高。 如果打开了 Always On,前端负载均衡器会每隔五分钟向应用程序根目录发送一次 GET 请求。 连续的 ping 会阻止卸载该应用。

      对于连续的 WebJobs 或使用 CRON 表达式触发的 WebJobs,Always On 是必需的。

    • HTTP 版本:设置为“2.0”,以启用对 HTTPS/2 协议的支持。

    注意

    大多数新型浏览器仅支持通过 TLS 的 HTTP/2 协议,而非加密流量继续使用 HTTP/1.1。 若要确保客户端浏览器使用 HTTP/2 连接到应用,请保护自定义 DNS 名称。 有关详细信息,请参阅在 Azure 应用服务中使用 TLS/SSL 绑定保护自定义 DNS 名称

    • ARR 相关性:在多实例部署中,请确保在会话的整个生存期内,将客户端路由到同一实例。 对于无状态应用程序,请将此选项设置为“关闭”。
  • 调试:为 ASP.NETASP.NET CoreNode.js 应用启用远程调试。 此选项在 48 小时后会自动关闭。

  • 传入的客户端证书:要求在相互身份验证中使用客户端证书。

配置默认文档

此设置仅适用于 Windows 应用。

默认文档是在应用服务应用的根 URL 中显示的网页。 使用列表中第一个匹配文件。 如果应用使用的模块基于 URL 进行路由而不是提供静态内容,则无需使用默认文档。

  1. Azure 门户中搜索并选择“应用服务” ,然后选择应用。

  2. 在应用的左侧菜单中,选择“配置”>“默认文档”。

    默认文档

  3. 若要添加默认文档,请单击“新建文档”。 若要删除默认文档,请单击其右侧的“删除”。

将 URL 路径映射到目录

默认情况下,应用服务从应用代码的根目录启动应用。 但某些 Web 框架不在根目录下启动。 例如,Laravelpublic 子目录中启动。 例如,可在 http://contoso.com/public 中访问此类应用,但你通常需要改为将 http://contoso.com 定向到 public 目录。 如果应用的启动文件位于其他文件夹中,或者存储库包含多个应用程序,你可以编辑或添加虚拟应用程序和目录。

  1. Azure 门户中搜索并选择“应用服务” ,然后选择应用。

  2. 在应用的左侧菜单中,选择“配置”>“路径映射”

  3. 单击“新建虚拟应用程序或目录”。

    • 若要将虚拟目录映射到物理路径,请将“目录”复选框保持选中状态。 指定虚拟目录,以及网站根目录相应的相对(物理)路径 (D:\home)。
    • 若要将虚拟目录标记为 Web 应用程序,请清除“目录”复选框。

    “目录”复选框

  4. 单击 “确定”

配置处理程序映射

对于 Windows 应用,可以自定义 IIS 处理程序映射和虚拟应用程序与目录。 使用处理程序映射可以添加自定义脚本处理程序用于处理特定文件扩展名的请求。

添加自定义处理程序:

  1. Azure 门户中搜索并选择“应用服务” ,然后选择应用。

  2. 在应用的左侧菜单中,选择“配置”>“路径映射”。

    路径映射

  3. 单击“新处理程序映射”。 按如下所述配置处理程序:

    • 扩展名。 要处理的文件扩展名,例如 *.php 或 handler.fcgi。
    • 脚本处理程序。 脚本处理程序的绝对路径。 与文件扩展名匹配的文件请求由脚本处理程序处理。 使用路径 D:\home\site\wwwroot 表示应用的根目录。
    • 参数。 脚本处理程序的可选命令行参数
  4. 单击 “确定”

配置自定义容器

后续步骤