Leer en inglés

Compartir a través de

配置应用服务应用

Nota

从 2024 年 6 月 1 日开始,新创建的应用服务应用可以生成使用命名约定 <app-name>-<random-hash>.<region>.chinacloudsites.cn 的唯一默认主机名。 现有应用名称保持不变。 例如:

myapp-ds27dh7271aah175.chinanorth3-01.chinacloudsites.cn

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

配置应用设置

在 Azure 应用服务中,应用设置是作为环境变量传递给应用程序代码的变量。 以下条件适用于应用设置:

  • 应用设置名称只能包含字母、数字(0-9)、句点(.)和下划线(_)。
  • 应用设置值中的特殊字符必须按照目标操作系统的要求进行转义。

例如,若要使用值 "pa$$w0rd\"在适用于 Linux 的应用服务中设置环境变量,应用设置的字符串应为 "pa\$\$w0rd\\"

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

对于 ASP.NET 和 ASP.NET Core 开发人员来说,在应用服务中配置应用设置就像在 <appSettings>Web.configappsettings.json中配置一样。 但是,应用服务中的值将替代 Web.configappsettings.json 中的值。 可以在应用服务中安全地保留开发设置(例如本地 MySQL 密码)或Web.configappsettings.json生产机密(例如 Azure MySQL 数据库密码)。 同一代码在本地调试时使用开发设置,在部署到 Azure 时会使用生产机密。

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

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

Nota

如果在应用设置中存储机密,请考虑使用 Azure Key Vault 引用。 如果机密用于连接到后端资源,请考虑更安全且根本不需要机密的连接选项。 有关详细信息,请参阅从 Azure应用服务安全地连接到 Azure 服务和数据库

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

    显示搜索应用服务的屏幕截图。

  2. 在应用的左侧菜单中,选择 “环境变量”。 然后选择 “应用设置”。

    显示用于显示应用设置的选择的屏幕截图。

    默认情况下,出于安全考虑,应用设置值会隐藏在门户中。 要查看某个应用设置的隐藏值,可选择其“”字段。 要查看所有应用设置的隐藏值,可选择“显示值”按钮。

  3. 若要添加新的应用设置,请选择“添加”。 若要编辑设置,请选择该设置。

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

    Nota

    在默认 Linux 应用服务或自定义 Linux 容器中,应用设置名称中的任何嵌套 JSON 密钥结构都需要以不同的方式为密钥名称配置。 将任何冒号(:)替换为双下划线(__),并将任何句号(.)替换为单个下划线(_)。 例如,ApplicationInsights:InstrumentationKey 需要在应用服务中配置为密钥名称 ApplicationInsights__InstrumentationKey

  5. 完成后,选择应用。 不要忘记在“环境变量”页上选择“应用”。

批量编辑应用设置

  1. 选择“高级编辑”按钮。

  2. 编辑文本区域中的设置。

  3. 完成后,选择“确定”。 不要忘记在“环境变量”页上选择“应用”。

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

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

配置连接字符串

Nota

考虑更安全且根本不需要连接机密的连接选项。 有关详细信息,请参阅从 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_

Nota

面向 PostgreSQL、通知中心、服务总线、事件中心、Azure Cosmos DB 和 Redis 缓存的 .NET 应用应将连接字符串设置为 Custom 作为 .NET EnvironmentVariablesConfigurationProvider 中已知问题的解决方法。

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

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

Nota

您还可以通过使用 Key Vault 引用 来解析在 Key Vault 中存储的连接字符串。

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

    显示搜索应用服务的屏幕截图。

  2. 在应用的左侧菜单中,选择 “环境变量”。 然后选择 “连接字符串”。

    显示用于显示连接字符串的选择的屏幕截图。

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

  3. 若要添加新的连接字符串,请选择“添加”。 若要编辑某个连接字符串,请选择该连接字符串。

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

  5. 完成后,选择应用。 不要忘记在“环境变量”页上选择“应用”。

批量编辑连接字符串

  1. 选择“高级编辑”按钮。

  2. 在文本区域中编辑连接字符串。

  3. 完成后,选择应用。 不要忘记在“环境变量”页上选择“应用”。

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

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

配置语言堆栈设置

配置常规设置

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

  2. 在应用的左侧菜单中,选择“ 配置”。 然后选择 “常规设置”。

    显示打开常规设置选项的屏幕截图。

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

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

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

    显示 Linux 容器的堆栈设置的屏幕截图。

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

    • 平台位性:选择 32 位或 64 位。 仅适用于 Windows 应用。

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

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

      Nota

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

    • Web 套接字配置 ASP.NET SignalRsocket.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 加密版本。

  • 调试:为 ASP.NETASP.NET CoreNode.js 应用启用远程调试。 此选项在 48 小时后会自动关闭。

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

配置默认文档

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

配置默认文档的设置仅适用于 Windows 应用。

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

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

    显示用于显示默认文档的选择的屏幕截图。

  3. 要添加默认文档,可选择“新建文档”。 要移除默认文档,请选择其右侧的“删除”。

将 URL 路径映射到目录

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

将虚拟目录映射到物理路径的功能仅在 Windows 应用中可用。

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

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

  3. 选择“新建虚拟应用程序或目录”。 然后执行以下操作之一:

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

    显示用于显示“目录”复选框的选择的屏幕截图。

  4. 选择“确定”。 不要忘记在“配置”页上选择“保存”。

配置处理程序映射

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

添加自定义处理程序:

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

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

    显示用于显示路径映射的选择的屏幕截图。

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

    • 扩展名。 要处理的文件扩展名,例如 *.phphandler.fcgi
    • 脚本处理程序。 脚本处理程序的绝对路径。 脚本处理器处理与文件扩展名匹配的文件的请求。 使用路径 D:\home\site\wwwroot 表示应用的根目录。
    • 参数。 脚本处理程序的可选命令行参数
  4. 选择“确定”。 不要忘记在“配置”页上选择“保存”。

配置自定义容器