다음을 통해 공유


App Service 앱 구성

이 문서에서는 웹앱, 모바일 백 엔드 또는 API 앱에 대한 일반적인 설정을 구성하는 방법을 설명합니다. Azure Functions의 경우 Azure Functions에 대한 앱 설정 참조를 참조하세요.

앱 설정 구성

Azure App Service에서 앱 설정은 애플리케이션 코드에 환경 변수로 전달되는 변수입니다. 앱 설정에는 다음 조건이 적용됩니다.

  • 앱 설정 이름에는 문자, 숫자(0-9), 마침표(.) 및 밑줄(_)만 포함될 수 있습니다.
  • 앱 설정 값의 특수 문자는 대상 운영 체제의 요구에 따라 이스케이프되어야 합니다.

예를 들어, Linux용 App Service에서 환경 변수를 값 "pa$$w0rd\"로 설정하려면, 앱 설정 문자열은 "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의 값을 재정의합니다. 로컬 MySQL 암호와 같은 개발 설정은 Web.config 또는 appsettings.json에 저장할 수 있습니다. Azure MySQL 데이터베이스 암호와 같은 프로덕션 비밀을 App Service에서 안전하게 유지할 수 있습니다. 로컬로 디버그할 때 동일한 코드에서 개발 설정을 사용합니다. Azure에 배포할 때 프로덕션 비밀을 사용합니다.

다른 언어 스택은 런타임에 환경 변수로 앱 설정을 가져옵니다. 각 언어 스택과 관련된 단계는 다음을 참조하세요.

앱 설정은 저장될 때 항상 암호화됩니다(미사용 시 암호화됨).

참고

앱 설정에 비밀을 저장하는 경우 Azure Key Vault 참조를 사용하는 것이 좋습니다. 비밀이 백 엔드 리소스에 연결하기 위한 경우 더 안전하고 비밀이 필요하지 않은 연결 옵션을 고려합니다. 자세한 내용은 Azure 앱 Service에서 Azure 서비스 및 데이터베이스에 대한 보안 연결을 참조하세요.

  1. Azure Portal에서 App Services를 검색하여 선택한 다음, 앱을 선택합니다.

  2. 앱의 왼쪽 메뉴에서 설정>환경 변수를 선택합니다. 그런 다음 , 앱 설정을 선택합니다.

    앱 설정을 표시하기 위한 선택 항목을 보여 주는 스크린샷

    기본값으로 앱 설정의 값은 보안을 위해 포털에서 숨겨집니다. 앱 설정의 숨겨진 값을 보려면 아래에서 값 표시를 선택합니다. 모든 앱 설정의 숨겨진 값을 보려면 값 표시를 선택합니다.

    참고

    Azure Portal에서 이 섹션을 보려면 읽기/쓰기 사용자 권한이 필요합니다. 충분한 권한이 있는 RBAC 내장 역할은 소유자, 기여자 및 웹사이트 기여자입니다. 읽기 권한자 역할만으로는 이 페이지에 액세스할 수 없습니다.

  3. 새 앱 설정을 추가하려면 추가를 선택합니다. 설정을 편집하려면 설정을 선택합니다.

  4. 대화 상자에서 설정을 현재 슬롯에 고정할 수 있습니다.

    참고

    기본 Linux 앱 서비스 또는 사용자 지정 Linux 컨테이너에서는 앱 설정 이름의 중첩된 JSON 키 구조를 키 이름에 대해 다르게 구성해야 합니다. 모든 콜론(:)을 이중 밑줄(__)로 대체합니다. 모든 마침표(.)를 단일 밑줄(_)로 바꿉니다. 예를 들어 App Service에서 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
  },
  ...
]

연결 문자열 구성

이 섹션에서는 연결 문자열을 구성하는 방법을 설명합니다.

참고

더 안전하며 연결 비밀이 필요하지 않은 연결 옵션을 고려합니다. 자세한 내용은 Azure 앱 Service에서 Azure 서비스 및 데이터베이스에 대한 보안 연결을 참조하세요.

ASP.NET 및 ASP.NET Core 개발자의 경우 App Service에서 연결 문자열을 설정하는 것은 <connectionStrings>Web.config에 설정하는 것과 같습니다. App Service에서 설정한 값은 Web.config의 값을 우선합니다. 에서 데이터베이스 파일과 같은 개발 설정을 유지할 수 있습니다 Web.config. APP Service에서 SQL 데이터베이스 자격 증명과 같은 프로덕션 비밀을 안전하게 유지할 수 있습니다. 로컬로 디버그할 때 동일한 코드에서 개발 설정을 사용합니다. Azure에 배포할 때 프로덕션 비밀을 사용합니다.

다른 언어 스택의 경우 대신 앱 설정을 사용하는 것이 좋습니다. 연결 문자열은 값에 액세스하기 위해 변수 키에 특수 서식을 지정해야 합니다.

non-.NET 언어에 대한 앱 설정 대신 연결 문자열을 사용하려는 경우가 있습니다. 특정 Azure 데이터베이스 유형은 App Service 앱에서 데이터베이스에 대한 연결 문자열을 구성하는 경우에만 앱과 함께 백업됩니다. 자세한 내용은 사용자 지정 백업 만들기를 참조하세요. 이 자동화된 백업이 필요하지 않은 경우 앱 설정을 사용합니다.

런타임에 연결 문자열은 환경 변수로 사용할 수 있으며, 다음 연결 형식이 접두사로 사용됩니다.

  • SQL Server: SQLCONNSTR_
  • MySQL: MYSQLCONNSTR_
  • Azure SQL: SQLAZURECONNSTR_
  • 사용자 지정: CUSTOMCONNSTR_
  • PostgreSQL: POSTGRESQLCONNSTR_
  • Azure Notification Hubs: NOTIFICATIONHUBCONNSTR_
  • Azure Service Bus: SERVICEBUSCONNSTR_
  • Azure Event Hubs: EVENTHUBCONNSTR_
  • Azure Cosmos DB: DOCDBCONNSTR_
  • 레디스 캐시: REDISCACHECONNSTR_

참고

PostgreSQL, Notification Hubs, Service Bus, Event Hubs, Azure Cosmos DB 및 Redis 캐시를 대상으로 하는 .NET 앱은 .NET EnvironmentVariablesConfigurationProvider의 알려진 문제에 대한 해결 방법으로 연결 문자열을 Custom으로 설정해야 합니다.

예를 들어 MySQL 연결 문자열 이름이 connectionstring1로 지정된 경우 환경 변수 MYSQLCONNSTR_connectionString1을 통해 액세스될 수 있습니다. 각 언어 스택과 관련된 단계는 다음을 참조하세요.

연결 문자열은 저장될 때 항상 암호화됩니다(미사용 시 암호화됨).

참고

Key Vault 참조를 사용하여 Key Vault에서 연결 문자열을 해결할 수도 있습니다.

  1. Azure Portal에서 App Services를 검색하여 선택한 다음, 앱을 선택합니다.

  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 Portal에서 App Services를 검색하여 선택한 다음, 앱을 선택합니다.

  2. 앱의 왼쪽 메뉴에서 설정>구성을 선택합니다. 그런 다음 일반 설정을 선택합니다.

    일반 설정을 여는 선택 항목을 보여 주는 스크린샷.

여기에서 앱에 대한 몇 가지 일반 설정을 구성할 수 있습니다. 일부 설정에서는 더 높은 가격 책정 계층으로 스케일 업해야 합니다.

  • 스택 설정: 언어 및 SDK 버전을 포함하여 앱을 실행하도록 소프트웨어 스택에 대한 설정을 구성합니다.

    Linux 앱의 경우 언어 런타임 버전을 선택하고 선택적 시작 명령을 설정할 수 있습니다.

  • 플랫폼 설정: 다음을 포함하여 호스팅 플랫폼에 대한 설정을 구성합니다.

    • 플랫폼: 32비트 또는 64비트 선택 Windows 앱에만 해당합니다.

    • FTP 상태: FTPS만 허용하거나 FTP를 모두 사용하지 않도록 설정합니다.

    • HTTP 버전: HTTPS/2 프로토콜에 대한 지원을 사용하도록 설정하려면 2.0으로 설정합니다.

      참고

      대부분의 최신 브라우저는 TLS를 통한 HTTP/2 프로토콜만 지원합니다. 암호화되지 않은 트래픽은 HTTP/1.1을 계속 사용합니다. 클라이언트 브라우저가 HTTP/2를 사용하여 앱에 연결되도록 하려면 사용자 지정 DNS 이름을 보호합니다. 자세한 내용은 App Service에서 TLS/SSL 바인딩을 사용하여 사용자 지정 DNS 이름에 대한 보안 제공을 참조하세요.

    • 웹 소켓: 예를 들어 ASP.NET SignalR 또는 socket.io 대해 구성합니다.

    • Always On: 트래픽이 없는 경우에도 앱을 로드된 상태로 유지하려면 켭니다.

      Always On이 꺼지면(기본값) 들어오는 요청 없이 20분 후에 앱이 언로드됩니다. 언로드된 앱은 준비 시간 때문에 새 요청에 대해 대기 시간이 길어질 수 있습니다.

      Always On이 켜지면 프런트 엔드 부하 분산 장치는 5분마다 애플리케이션 루트에 요청을 보냅니 GET 다. 연속 ping은 앱이 언로드될 수 없도록 방지합니다.

      연속적으로 실행되는 웹 작업 또는 cron 식으로 실행되는 웹 작업에는 Always On이 필요합니다.

    • 세션 선호도: 다중 인스턴스 배포에서 클라이언트가 세션 수명 동안 동일한 인스턴스로 라우팅되는지 확인합니다. 상태 비저장 애플리케이션의 경우 이 옵션을 Off로 설정할 수 있습니다.

    • 세션 고정 프록시: 앱이 역방향 프록시 뒤에 있고 (예: Azure Application Gateway 또는 Azure Front Door) 기본 호스트 이름을 사용하는 경우 켜십시오. 세션 선호도 쿠키의 도메인은 역방향 프록시의 전달된 호스트 이름과 일치합니다.

    • HTTPS 전용: 모든 HTTP 트래픽을 HTTPS로 리디렉션하려는 경우 사용하도록 설정합니다.

    • 최소 TLS 버전: 앱에 필요한 최소 TLS 암호화 버전을 선택합니다.

  • 디버깅: ASP.NET, ASP.NET Core, Node.js 앱에 대해 원격 디버깅을 사용하도록 설정합니다. 이 옵션은 48시간 후에 자동으로 해제됩니다.

  • 들어오는 클라이언트 인증서: 상호 인증에 클라이언트 인증서가 필요합니다.

기본 문서 구성

기본 문서는 App Service 앱의 루트 URL에 표시되는 웹 페이지입니다. 목록에서 첫 번째로 일치되는 파일이 사용됩니다. 앱에서 정적 콘텐츠를 제공하는 대신 URL을 기반으로 경로를 사용하는 모듈을 사용하는 경우 기본 문서가 필요하지 않습니다.

기본 문서를 구성하는 설정은 Windows 앱에만 적용됩니다.

  1. Azure Portal에서 App Services를 검색하여 선택한 다음, 앱을 선택합니다.
  2. 앱의 왼쪽 메뉴에서 구성을 선택합니다. 그런 다음 , 기본 문서를 선택합니다.
  3. 기본 문서를 추가하려면 새 문서를 선택합니다. 기본 문서를 제거하려면 오른쪽에 있는 삭제를 선택합니다.

디렉터리에 URL 경로 매핑

기본적으로 App Service는 앱 코드의 루트 디렉터리에서 앱을 시작합니다. 그러나 특정 웹 프레임워크는 루트 디렉터리에서 시작하지 않습니다. 예를 들어 Laravelpublic 하위 디렉터리에서 시작합니다. 예를 들어 이러한 앱은 http://contoso.com/public에서 액세스할 수 있지만 일반적으로 대신 http://contoso.compublic 디렉터리로 지정하려고 합니다. 앱의 시작 파일이 다른 폴더에 있거나 리포지토리에 둘 이상의 애플리케이션이 있는 경우 가상 애플리케이션 및 디렉터리를 편집하거나 추가할 수 있습니다.

가상 디렉터리를 실제 경로에 매핑하는 기능은 Windows 앱에서만 사용할 수 있습니다.

  1. Azure Portal에서 App Services를 검색하여 선택한 다음, 앱을 선택합니다.

  2. 앱의 왼쪽 메뉴에서 설정>구성을 선택합니다. 그런 다음 경로 매핑을 선택합니다.

  3. 새 가상 애플리케이션 또는 디렉터리를 선택합니다. 그런 다음, 다음 작업 중 하나를 수행합니다.

    • 가상 디렉터리를 실제 경로에 매핑하려면 디렉터리를 선택된 상태로 둡니다. 가상 디렉터리 및 웹 사이트 루트(D:\home)에 대한 해당 상대(실제) 경로를 지정합니다.
    • 가상 디렉터리를 웹 애플리케이션으로 표시하려면 디렉터리를 선택 취소합니다.

    디렉터리 확인란을 표시하기 위한 선택 항목을 보여 주는 스크린샷

  4. 확인선택합니다. 그런 다음 구성 페이지에서 저장을 선택합니다.

처리기 매핑 설정

Windows 앱의 경우 IIS 처리기 매핑과 가상 애플리케이션 및 디렉터리를 사용자 지정할 수 있습니다. 처리기 매핑을 사용하면 특정 파일 확장명에 대한 요청을 처리하는 사용자 지정 스크립트 프로세서를 추가할 수 있습니다.

사용자 지정 처리기를 추가하려면 다음을 수행합니다.

  1. Azure Portal에서 App Services를 검색하여 선택한 다음, 앱을 선택합니다.

  2. 앱의 왼쪽 메뉴에서 설정>구성을 선택합니다. 그런 다음 경로 매핑을 선택합니다.

  3. 새 처리기 매핑을 선택합니다. 다음과 같이 처리기를 구성합니다.

    • 확장명. 처리할 파일 확장명입니다(예: *.php 또는 handler.fcgi.).
    • 스크립트 프로세서. 스크립트 프로세서의 절대 경로입니다. 스크립트 프로세서는 파일 확장과 일치하는 파일에 대한 요청을 처리합니다. 경로 D:\home\site\wwwroot 를 사용하여 앱의 루트 디렉터리를 참조합니다.
    • 인수. 스크립트 프로세서에 대한 선택적 명령줄 인수입니다.
  4. 확인선택합니다. 그런 다음 구성 페이지에서 저장을 선택합니다.

사용자 지정 컨테이너 구성