App Service 앱 구성
참고 항목
2024년 6월 1일부터, 새로 만들어진 모든 App Service 앱에는 명명 규칙 <app-name>-<random-hash>.<region>.azurewebsites.net
을 사용하여 고유한 기본 호스트 이름을 생성할 수 있는 옵션이 제공됩니다. 기존 앱 이름은 변경되지 않은 상태로 유지됩니다.
예: myapp-ds27dh7271aah175.westus-01.azurewebsites.net
자세한 내용은 App Service 리소스의 고유 기본 호스트 이름을 참조하세요.
이 문서에서는 웹앱, 모바일 백 엔드 또는 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에 배포될 때 프로덕션 비밀을 사용합니다.
마찬가지로 다른 언어 스택은 런타임에 환경 변수로 앱 설정을 가져옵니다. 언어 스택 관련 단계는 다음을 참조하세요.
앱 설정은 저장될 때 항상 암호화됩니다(미사용 암호화).
참고 항목
앱 설정에 비밀을 저장하는 경우 Key Vault 참조를 사용하는 것이 좋습니다. 비밀이 백 엔드 리소스에 연결하기 위한 경우 비밀이 전혀 필요하지 않은 보다 안전한 연결 옵션을 고려합니다. 자세한 내용은 Azure 앱 Service에서 Azure 서비스 및 데이터베이스에 대한 보안 연결을 참조하세요.
Azure Portal에서 App Services를 검색하여 선택한 다음, 앱을 선택합니다.
앱의 왼쪽 메뉴에서 환경 변수>앱 설정을 선택합니다.
기본값으로 앱 설정의 값은 보안을 위해 포털에서 숨겨집니다. 앱 설정의 숨겨진 값을 보려면 해당 값 필드를 선택합니다. 모든 앱 설정의 숨겨진 값을 보려면 값 표시 단추를 선택합니다.
새 앱 설정을 추가하려면 추가를 선택합니다. 설정을 편집하려면 설정을 클릭합니다.
대화 상자에서 설정을 현재 슬롯에 고정할 수 있습니다.
참고 항목
기본 Linux 앱 서비스 또는 사용자 지정 Linux 컨테이너에서,
ApplicationInsights:InstrumentationKey
과 같은 앱 설정 이름의 중첩된 JSON 키 구조체는 App Service에서 키 이름으로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에서 연결 문자열을 설정하는 것은 Web.config의 <connectionStrings>
에서 설정하는 것과 비슷하지만 App Service에서 설정한 값은 Web.config의 값을 재정의합니다. 개발 설정(예: 데이터베이스 파일)은 Web.config 및 프로덕션 비밀(예: SQL Database 자격 증명)을 App Service에서 안전하게 유지할 수 있습니다. 로컬에서 디버그할 때 동일한 코드가 개발 설정을 사용하고 Azure에 배포될 때 프로덕션 비밀을 사용합니다.
다른 언어 스택의 경우, 연결 문자열이 값에 액세스하기 위해 변수 키에 특별한 서식이 필요하기 때문에 앱 설정을 사용하는 것이 좋습니다.
참고 항목
비 .NET 언어에 대한 앱 설정 대신 연결 문자열을 사용하는 경우는 다음 한 가지입니다. 특정 Azure 데이터베이스 유형은 App Service 앱에서 데이터베이스에 대한 연결 문자열을 구성하는 경우에만 앱과 함께 백업됩니다. 자세한 내용은 사용자 지정 백업 만들기를 참조하세요. 이 자동화된 백업이 필요하지 않은 경우 앱 설정을 사용합니다.
런타임에 연결 문자열은 환경 변수로 사용할 수 있으며, 다음 연결 형식이 접두사로 사용됩니다.
- SQLServer:
SQLCONNSTR_
- MySQL:
MYSQLCONNSTR_
- SQLAzure:
SQLAZURECONNSTR_
- 사용자 지정:
CUSTOMCONNSTR_
- PostgreSQL:
POSTGRESQLCONNSTR_
- 알림 허브:
NOTIFICATIONHUBCONNSTR_
- Service Bus:
SERVICEBUSCONNSTR_
- Event Hub:
EVENTHUBCONNSTR_
- 문서 DB:
DOCDBCONNSTR_
- Redis Cache:
REDISCACHECONNSTR_
참고 항목
PostgreSQL, 알림 허브, Service Bus, Event Hub, 문서 DB 및 Redis Cache를 대상으로 하는 .NET 앱은 .NET EnvironmentVariablesConfigurationProvider의 알려진 문제에 대한 해결 방법으로 연결 문자열을 사용자 지정으로 설정해야 합니다.
예를 들어 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 이름을 보호합니다. 자세한 내용은 Azure App Service에서 TLS/SSL 바인딩으로 사용자 지정 DNS 이름 보호를 참조하세요.
웹 소켓: 예를 들어 ASP.NET SignalR 또는 socket.io입니다.
Always On: 트래픽이 없는 경우에도 앱을 로드 상태로 유지합니다. Always On을 설정하지 않으면(기본값) 들어오는 요청 없이 20분 후에 앱이 언로드됩니다. 언로드된 앱은 준비 시간 때문에 새 요청에 대해 대기 시간이 길어질 수 있습니다. Always On 설정되면 프런트 엔드 부하 분산 장치는 5분 마다 애플리케이션 루트에 GET 요청을 보냅니다. 재이미징 작업이 올바르게 수행되도록 하려면 이 요청이 200 OK 응답을 수신하도록 하는 것이 중요합니다. 연속 ping은 앱이 언로드될 수 없도록 방지합니다.
Always On은 연속 WebJobs 또는 CRON 언어 식을 사용하여 트리거되는 WebJobs에 필요합니다.
세션 선호도: 다중 인스턴스 배포에서 클라이언트가 세션 수명 동안 동일한 인스턴스로 라우팅되는지 확인합니다. 상태 비저장 애플리케이션의 경우 이 옵션을 Off로 설정할 수 있습니다.
세션 선호도 프록시: 앱이 역방향 프록시(예: Azure 애플리케이션 Gateway 또는 Azure Front Door) 뒤에 있고 기본 호스트 이름을 사용하는 경우 세션 선호도 프록시를 켤 수 있습니다. 세션 선호도 쿠키의 도메인은 역방향 프록시의 전달된 호스트 이름과 일치합니다.
HTTPS만 해당: 사용하도록 설정하면 모든 HTTP 트래픽이 HTTPS로 리디렉션됩니다.
최소 TLS 버전: 앱에 필요한 최소 TLS 암호화 버전을 선택합니다.
디버깅: ASP.NET, ASP.NET Core, Node.js 앱에 대해 원격 디버깅을 사용하도록 설정합니다. 이 옵션은 48시간 후에 자동으로 해제됩니다.
수신 클라이언트 인증서: 상호 인증에 클라이언트 인증서가 필요합니다.
기본 문서 구성
이 설정은 Windows 앱에 대해서만 지원됩니다.
기본 문서는 App Service 앱의 루트 URL에 표시되는 웹 페이지입니다. 목록에서 첫 번째로 일치되는 파일이 사용됩니다. 앱에서 정적 콘텐츠를 제공하는 대신 URL을 기반으로 경로를 사용하는 모듈을 사용하는 경우 기본 문서가 필요하지 않습니다.
Azure Portal에서 App Services를 검색하여 선택한 다음, 앱을 선택합니다.
앱의 왼쪽 메뉴에서 구성>기본 문서를 선택합니다.
기본 문서를 추가하려면 새 문서를 선택합니다. 기본 문서를 제거하려면 오른쪽에 있는 삭제를 선택합니다.
디렉터리에 URL 경로 매핑
기본적으로 App Service는 앱 코드의 루트 디렉터리에서 앱을 시작합니다. 그러나 특정 웹 프레임워크는 루트 디렉터리에서 시작하지 않습니다. 예를 들어 Laravel은 public
하위 디렉터리에서 시작합니다. 예를 들어 이러한 앱은 http://contoso.com/public
에서 액세스할 수 있지만 일반적으로 대신 http://contoso.com
을 public
디렉터리로 지정하려고 합니다. 앱의 시작 파일이 다른 폴더에 있거나 리포지토리에 둘 이상의 애플리케이션이 있는 경우 가상 애플리케이션 및 디렉터리를 편집하거나 추가할 수 있습니다.
Important
실제 경로 기능에 대한 가상 디렉터리를 Windows 앱에서만 사용할 수 있습니다.
Azure Portal에서 App Services를 검색하여 선택한 다음, 앱을 선택합니다.
앱의 왼쪽 메뉴에서 구성>경로 매핑을 선택합니다.
새 가상 애플리케이션 또는 디렉터리를 선택합니다.
- 가상 디렉터리를 실제 경로에 매핑하려면 디렉터리 확인란을 선택된 상태로 둡니다. 가상 디렉터리 및 웹 사이트 루트(
D:\home
)에 대한 해당 상대(실제) 경로를 지정합니다. - 가상 디렉터리를 웹 애플리케이션으로 표시하려면 디렉터리 확인란의 선택을 취소합니다.
- 가상 디렉터리를 실제 경로에 매핑하려면 디렉터리 확인란을 선택된 상태로 둡니다. 가상 디렉터리 및 웹 사이트 루트(
확인을 선택합니다. 구성 페이지에서 저장을 선택하는 것을 잊지 마세요.
처리기 매핑 구성
Windows 앱의 경우 IIS 처리기 매핑과 가상 애플리케이션 및 디렉터리를 사용자 지정할 수 있습니다. 처리기 매핑을 사용하면 특정 파일 확장명에 대한 요청을 처리하는 사용자 지정 스크립트 프로세서를 추가할 수 있습니다.
사용자 지정 처리기를 추가하려면 다음을 수행합니다.
Azure Portal에서 App Services를 검색하여 선택한 다음, 앱을 선택합니다.
앱의 왼쪽 메뉴에서 구성>경로 매핑을 선택합니다.
새 처리기 매핑을 선택합니다. 다음과 같이 처리기를 구성합니다.
- 확장명. *.php 또는 handler.fcgi와 같이 처리하려는 파일 확장.
- 스크립트 프로세서. 스크립트 프로세서의 절대 경로입니다. 파일 확장명과 일치하는 파일에 대한 요청이 스크립트 프로세서에서 처리됩니다. 경로
D:\home\site\wwwroot
를 사용하여 앱의 루트 디렉터리를 참조합니다. - 인수. 스크립트 프로세서에 대한 선택적 명령줄 인수입니다.
확인을 선택합니다. 구성 페이지에서 저장을 선택하는 것을 잊지 마세요.