설명
HTTP/2는 다중화 등 웹 요청 처리 효율을 높이는 기능을 제공합니다. HTTP/2가 비활성화되어 있다는 사실만으로 통신이 암호화되지 않았다고 판단할 수는 없으며 HTTP/1.1도 HTTPS로 사용할 수 있습니다. 서비스 요구와 클라이언트 지원에 맞게 전송 방식을 정하세요.
잠재적 영향
- HTTP/2의 전송 효율 개선을 활용하지 못할 수 있습니다.
- 함수 앱별 프로토콜 설정이 조직의 운영 기준과 달라질 수 있습니다.
- 호환성을 확인하지 않고 변경하면 일부 클라이언트의 연결에 영향을 줄 수 있습니다.
해결 방법
HTTP/2가 필요한 환경에서는 site_config.http2_enabled = true를 설정하고 클라이언트와 실제 프로토콜 협상을 확인하세요. HTTPS, 최소 TLS 버전, 인증은 별도로 구성하세요. 클라이언트 인증서를 사용한다면 TLS 재협상을 요구하는 설정과의 호환성도 확인하세요.
예시
AzureRM 3.x의 기존 Function App 설정 일부이며 스토리지 등 필수 구성은 생략했습니다. 이 예제의 런타임 설정은 현재 사용할 버전을 권장하는 의미가 아닙니다.
변경 전
hcl
resource "azurerm_function_app" "example" {
name = "test-azure-functions"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
app_service_plan_id = azurerm_app_service_plan.example.id
}
변경 후
hcl
resource "azurerm_function_app" "example" {
name = "test-azure-functions"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
app_service_plan_id = azurerm_app_service_plan.example.id
site_config {
dotnet_framework_version = "v4.0"
scm_type = "LocalGit"
http2_enabled = true
}
}
변경 전에는 HTTP/2를 활성화하지 않습니다. 변경 후에는 http2_enabled = true를 설정합니다. 실제 HTTP/2 사용은 클라이언트와의 협상에 달려 있으며 이 설정만으로 HTTPS가 강제되지는 않습니다.