이 문서에서는 웹앱, 모바일 백 엔드 또는 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 서비스 및 데이터베이스에 대한 보안 연결을 참조하세요.
Azure Portal에서 App Services를 검색하여 선택한 다음, 앱을 선택합니다.
앱의 왼쪽 메뉴에서 설정>환경 변수를 선택합니다. 그런 다음 , 앱 설정을 선택합니다.
기본값으로 앱 설정의 값은 보안을 위해 포털에서 숨겨집니다. 앱 설정의 숨겨진 값을 보려면 값 아래에서 값 표시를 선택합니다. 모든 앱 설정의 숨겨진 값을 보려면 값 표시를 선택합니다.
참고
Azure Portal에서 이 섹션을 보려면 읽기/쓰기 사용자 권한이 필요합니다. 충분한 권한이 있는 RBAC 내장 역할은 소유자, 기여자 및 웹사이트 기여자입니다. 읽기 권한자 역할만으로는 이 페이지에 액세스할 수 없습니다.
새 앱 설정을 추가하려면 추가를 선택합니다. 설정을 편집하려면 설정을 선택합니다.
대화 상자에서 설정을 현재 슬롯에 고정할 수 있습니다.
참고
기본 Linux 앱 서비스 또는 사용자 지정 Linux 컨테이너에서는 앱 설정 이름의 중첩된 JSON 키 구조를 키 이름에 대해 다르게 구성해야 합니다. 모든 콜론(
:
)을 이중 밑줄(__
)로 대체합니다. 모든 마침표(.
)를 단일 밑줄(_
)로 바꿉니다. 예를 들어 App Service에서ApplicationInsights:InstrumentationKey
를 키 이름으로서ApplicationInsights__InstrumentationKey
로 구성해야 합니다.완료되면 적용을 선택합니다. 그런 다음, 환경 변수 페이지에서 적용을 선택합니다.
앱 설정을 대량으로 편집
- 고급 편집을 선택합니다.
- 텍스트 영역에서 설정을 편집합니다.
- 완료하면 확인을 선택합니다. 그런 다음, 환경 변수 페이지에서 적용을 선택합니다.
앱 설정에는 다음과 같은 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에서 연결 문자열을 해결할 수도 있습니다.
Azure Portal에서 App Services를 검색하여 선택한 다음, 앱을 선택합니다.
앱의 왼쪽 메뉴에서 설정>환경 변수를 선택합니다. 그런 다음 연결 문자열을 선택합니다.
기본값으로 연결 문자열의 값은 보안을 위해 포털에서 숨겨집니다. 연결 문자열의 숨겨진 값을 보려면 값 아래에서 값 표시를 선택합니다. 모든 연결 문자열의 숨겨진 값을 보려면 값 표시를 선택합니다.
새 연결 문자열을 추가하려면 추가를 선택합니다. 연결 문자열을 편집하려면 연결 문자열을 선택합니다.
대화 상자에서 연결 문자열을 현재 슬롯에 고정할 수 있습니다.
완료되면 적용을 선택합니다. 그런 다음, 환경 변수 페이지에서 적용을 선택합니다.
대량으로 연결 문자열 편집
- 고급 편집을 선택합니다.
- 텍스트 영역에서 연결 문자열을 편집합니다.
- 완료되면 적용을 선택합니다. 환경 변수 페이지에서 적용을 선택해야 합니다.
연결 문자열의 JSON 형식은 다음과 같습니다.
[
{
"name": "name-1",
"value": "conn-string-1",
"type": "SQLServer",
"slotSetting": false
},
{
"name": "name-2",
"value": "conn-string-2",
"type": "PostgreSQL",
"slotSetting": false
},
...
]
언어 스택 설정 구성
언어 스택 설정을 구성하려면 다음 리소스를 참조하세요.
일반 설정 구성
일반 설정을 구성하려면 선호하는 도구에 대한 단계를 수행합니다.
Azure Portal에서 App Services를 검색하여 선택한 다음, 앱을 선택합니다.
앱의 왼쪽 메뉴에서 설정>구성을 선택합니다. 그런 다음 일반 설정을 선택합니다.
여기에서 앱에 대한 몇 가지 일반 설정을 구성할 수 있습니다. 일부 설정에서는 더 높은 가격 책정 계층으로 스케일 업해야 합니다.
스택 설정: 언어 및 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 앱에만 적용됩니다.
- Azure Portal에서 App Services를 검색하여 선택한 다음, 앱을 선택합니다.
- 앱의 왼쪽 메뉴에서 구성을 선택합니다. 그런 다음 , 기본 문서를 선택합니다.
- 기본 문서를 추가하려면 새 문서를 선택합니다. 기본 문서를 제거하려면 오른쪽에 있는 삭제를 선택합니다.
디렉터리에 URL 경로 매핑
기본적으로 App Service는 앱 코드의 루트 디렉터리에서 앱을 시작합니다. 그러나 특정 웹 프레임워크는 루트 디렉터리에서 시작하지 않습니다. 예를 들어 Laravel은 public
하위 디렉터리에서 시작합니다. 예를 들어 이러한 앱은 http://contoso.com/public
에서 액세스할 수 있지만 일반적으로 대신 http://contoso.com
을 public
디렉터리로 지정하려고 합니다. 앱의 시작 파일이 다른 폴더에 있거나 리포지토리에 둘 이상의 애플리케이션이 있는 경우 가상 애플리케이션 및 디렉터리를 편집하거나 추가할 수 있습니다.
가상 디렉터리를 실제 경로에 매핑하는 기능은 Windows 앱에서만 사용할 수 있습니다.
Azure Portal에서 App Services를 검색하여 선택한 다음, 앱을 선택합니다.
앱의 왼쪽 메뉴에서 설정>구성을 선택합니다. 그런 다음 경로 매핑을 선택합니다.
새 가상 애플리케이션 또는 디렉터리를 선택합니다. 그런 다음, 다음 작업 중 하나를 수행합니다.
- 가상 디렉터리를 실제 경로에 매핑하려면 디렉터리를 선택된 상태로 둡니다. 가상 디렉터리 및 웹 사이트 루트(
D:\home
)에 대한 해당 상대(실제) 경로를 지정합니다. - 가상 디렉터리를 웹 애플리케이션으로 표시하려면 디렉터리를 선택 취소합니다.
- 가상 디렉터리를 실제 경로에 매핑하려면 디렉터리를 선택된 상태로 둡니다. 가상 디렉터리 및 웹 사이트 루트(
확인선택합니다. 그런 다음 구성 페이지에서 저장을 선택합니다.
처리기 매핑 설정
Windows 앱의 경우 IIS 처리기 매핑과 가상 애플리케이션 및 디렉터리를 사용자 지정할 수 있습니다. 처리기 매핑을 사용하면 특정 파일 확장명에 대한 요청을 처리하는 사용자 지정 스크립트 프로세서를 추가할 수 있습니다.
사용자 지정 처리기를 추가하려면 다음을 수행합니다.
Azure Portal에서 App Services를 검색하여 선택한 다음, 앱을 선택합니다.
앱의 왼쪽 메뉴에서 설정>구성을 선택합니다. 그런 다음 경로 매핑을 선택합니다.
새 처리기 매핑을 선택합니다. 다음과 같이 처리기를 구성합니다.
-
확장명. 처리할 파일 확장명입니다(예:
*.php
또는handler.fcgi
.). -
스크립트 프로세서. 스크립트 프로세서의 절대 경로입니다. 스크립트 프로세서는 파일 확장과 일치하는 파일에 대한 요청을 처리합니다. 경로
D:\home\site\wwwroot
를 사용하여 앱의 루트 디렉터리를 참조합니다. - 인수. 스크립트 프로세서에 대한 선택적 명령줄 인수입니다.
-
확장명. 처리할 파일 확장명입니다(예:
확인선택합니다. 그런 다음 구성 페이지에서 저장을 선택합니다.