이 문서에서는 웹앱, 모바일 백 엔드 또는 API 앱에 대한 일반 설정을 구성하는 방법을 설명합니다. Azure Functions의 경우 Azure Functions에 대한 앱 설정 참조를 참조하세요.
앱 설정 구성
참고
앱 설정 이름에는 문자, 숫자(0-9), 마침표(".") 및 밑줄("_")만 포함될 수 있습니다.
앱 설정 값의 특수 문자는 대상 OS에서 필요에 따라 이스케이프해야 합니다.
예를 들어 App Service Linux에서 앱 설정에 대한 문자열 값 "pa$$w0rd\" 으로 환경 변수를 설정하려면 다음을 수행해야 합니다."pa\$\$w0rd\\"
App Service에서 앱 설정은 애플리케이션 코드에 환경 변수로 전달되는 변수입니다. Linux 앱 및 사용자 지정 컨테이너의 경우, App Service는 --env 플래그를 사용하여 컨테이너에 앱 설정을 전달하고 컨테이너에서 환경 변수를 설정합니다. 두 경우 모두 앱을 시작할 때 앱 환경에 삽입됩니다. 앱 설정을 추가, 제거 또는 편집하는 경우 App Service는 앱 다시 시작을 트리거합니다.
ASP.NET 및 ASP.NET Core 개발자의 경우, App Service에서 앱 설정을 설정하는 것은 Web.config 또는 appsettings.json의 <appSettings>에서 설정하는 것과 같지만 App Service의 값이 Web.config 또는 appsettings.json의 값을 재정의합니다. Web.config 또는 appsettings.json에서 개발 설정(예: 로컬 MySQL 암호) 및 프로덕션 비밀(예: Azure MySQL 데이터베이스 암호)을 App Service 내에 안전하게 보관할 수 있습니다. 로컬에서 디버그할 때 동일한 코드가 개발 설정을 사용하고 Azure에 배포될 때 프로덕션 비밀을 사용합니다.
마찬가지로 다른 언어 스택은 런타임에 환경 변수로 앱 설정을 가져옵니다. 언어 스택 관련 단계는 다음을 참조하세요.
앱 설정 이름에는 마침표(.)를 포함할 수 없습니다. 앱 설정에 마침표가 포함된 경우 마침표는 컨테이너에서 밑줄로 대체됩니다.
참고
기본 Linux 앱 서비스 또는 사용자 지정 Linux 컨테이너에서, ApplicationInsights:InstrumentationKey과 같은 앱 설정 이름의 중첩된 JSON 키 구조체는 App Service에서 키 이름으로 ApplicationInsights__InstrumentationKey로 구성해야 합니다. 즉, 모든 :을 __로(밑줄 두개)로 대체해야 합니다.
# Save the settings
az webapp config appsettings list --name <app-name> --resource-group <group-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
Azure PowerShell에서 JSON 파일을 사용하여 앱 설정을 대량으로 편집할 수 없습니다.
연결 문자열 구성
Azure Portal에서 App Services를 검색하여 선택한 다음, 앱을 선택합니다. 앱의 왼쪽 메뉴에서 구성>애플리케이션 설정을 선택합니다.
ASP.NET 및 ASP.NET Core 개발자의 경우, App Service에서 연결 문자열을 설정하는 것은 Web.config의 <connectionStrings>에서 설정하는 것과 같지만, App Service에서 설정한 값은Web.config 값을 재정의합니다. Web.config에서 개발 설정(예: 데이터베이스 파일)을 App Service 내에 안전하게 보관하고 프로덕션 비밀(예: SQL Database 자격 증명)을 App Service 내에 안전하게 보관할 수 있습니다. 로컬에서 디버그할 때 동일한 코드가 개발 설정을 사용하고 Azure에 배포될 때 프로덕션 비밀을 사용합니다.
다른 언어 스택의 경우, 연결 문자열이 값에 액세스하기 위해 변수 키에 특별한 서식이 필요하기 때문에 앱 설정을 사용하는 것이 좋습니다.
참고
비 .NET 언어에 대한 앱 설정 대신 연결 문자열을 사용하는 경우는 다음 한 가지입니다. 특정 Azure 데이터베이스 유형은 App Service 앱에서 데이터베이스에 대한 연결 문자열을 구성하는 경우에만 앱과 함께 백업됩니다. 자세한 내용은 사용자 지정 백업 만들기를 참조하세요. 이 자동화된 백업이 필요하지 않은 경우 앱 설정을 사용합니다.
런타임에 연결 문자열은 환경 변수로 사용할 수 있으며, 다음 연결 형식이 접두사로 사용됩니다.
SQLServer: SQLCONNSTR_
MySQL: MYSQLCONNSTR_
SQLAzure: SQLAZURECONNSTR_
사용자 지정: CUSTOMCONNSTR_
PostgreSQL: POSTGRESQLCONNSTR_
예를 들어 MySQL 연결 문자열 이름이 connectionstring1로 지정된 경우 환경 변수 MYSQLCONNSTR_connectionString1을 통해 액세스될 수 있습니다. 언어 스택 관련 단계는 다음을 참조하세요.
# 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
Azure PowerShell에서 JSON 파일을 사용하여 연결 문자열을 대량으로 편집할 수 없습니다.
대부분의 최신 브라우저는 TLS를 통해서만 HTTP/2 프로토콜을 지원하는 반면에 암호화되지 않은 트래픽은 HTTP/1.1을 계속 사용합니다. 클라이언트 브라우저가 HTTP/2를 사용하여 앱에 연결되도록 하려면 사용자 지정 DNS 이름을 보호합니다. 자세한 내용은 Azure App Service에서 TLS/SSL 바인딩으로 사용자 지정 DNS 이름 보호를 참조하세요.
Always On: 트래픽이 없는 경우에도 앱을 로드 상태로 유지합니다. Always On을 설정하지 않으면(기본값) 들어오는 요청 없이 20분 후에 앱이 언로드됩니다. 언로드된 앱은 준비 시간 때문에 새 요청에 대해 대기 시간이 길어질 수 있습니다. Always On 설정되면 프런트 엔드 부하 분산 장치는 5분 마다 애플리케이션 루트에 GET 요청을 보냅니다. 연속 ping은 앱이 언로드될 수 없도록 방지합니다.
Always On은 연속 WebJobs 또는 CRON 언어 식을 사용하여 트리거되는 WebJobs에 필요합니다.
ARR 선호도: 다중 인스턴스 배포에서 클라이언트가 세션 수명 동안 동일한 인스턴스로 라우팅되는지 확인합니다. 상태 비저장 애플리케이션의 경우 이 옵션을 Off로 설정할 수 있습니다.
HTTPS만 해당: 사용하도록 설정하면 모든 HTTP 트래픽이 HTTPS로 리디렉션됩니다.
기본적으로 App Service는 앱 코드의 루트 디렉터리에서 앱을 시작합니다. 그러나 특정 웹 프레임워크는 루트 디렉터리에서 시작하지 않습니다. 예를 들어 Laravel은 public 하위 디렉터리에서 시작합니다. 예를 들어 이러한 앱은 http://contoso.com/public에서 액세스할 수 있지만 일반적으로 대신 http://contoso.com을 public 디렉터리로 지정하려고 합니다. 앱의 시작 파일이 다른 폴더에 있거나 리포지토리에 둘 이상의 애플리케이션이 있는 경우 가상 애플리케이션 및 디렉터리를 편집하거나 추가할 수 있습니다.