애플리케이션 요청 라우팅을 사용하여 3계층 배포 아키텍처 구성
작성자: IIS 팀
개요
이 항목에서는 애플리케이션 요청 라우팅을 사용하여 3계층 배포 아키텍처를 구성하는 단계를 안내합니다. 3계층 배포 아키텍처는 아래와 같이 웹 계층, 애플리케이션 서버 계층 및 데이터 계층으로 구성됩니다.
일반적으로 이 배포 시나리오에서 정적 콘텐츠는 계층 1 서버에서 제공되고 동적 콘텐츠는 계층 2 서버의 비즈니스 논리에 의해 제공됩니다.
목표
애플리케이션 요청 라우팅을 사용하여 3계층 배포 아키텍처를 구성합니다. 이 연습에서는 동적 콘텐츠에 대한 요청을 애플리케이션 서버로 전달하면서 ARR 서버에서 직접 정적 콘텐츠를 제공하도록 ARR 서버를 구성하는 방법에 중점을 두고 있습니다.
필수 조건
이 연습을 수행하려면 다음 필수 구성 요소가 필요합니다.
- Windows 2008(모든 SKU) 이상에서 IIS 7.0 이상
- Microsoft 애플리케이션 요청 라우팅 버전 1 및 종속 모듈
- 작업 사이트 및 애플리케이션이 있는 최소 두 개의 콘텐츠 서버
- 애플리케이션 요청 라우팅 서버에서 사용할 수 있는 정적 콘텐츠
이 문서에 설명된 단계에 따라 애플리케이션 요청 라우팅을 설치합니다.
또 다른 필수 조건으로 ARR(애플리케이션 요청 라우팅) 서버 그룹 정의 및 구성에 설명된 단계를 사용하여 서버 팜을 정의하고 구성해야 합니다.
1단계 – 정적 요청을 필터링하도록 URL 다시 쓰기 규칙을 변경합니다.
이 단계에서는 특정 확장 또는 경로에 대한 요청이 애플리케이션 요청 라우팅 서버에서 직접 제공되도록 URL 다시 쓰기 규칙이 변경됩니다. 정적 요청은 .jpg 또는 .gif 같은 파일 확장자를 확인하여 식별할 수 있습니다. 정적 리소스가 /images/와 같은 특정 폴더에 포함된 경우 URL 다시 쓰기 규칙은 URL에서 경로를 찾을 수 있습니다.
이 연습에서는 /images/ 폴더와 함께 .jpg 및 .css 확장을 찾으도록 URL 다시 쓰기 규칙을 변경합니다. 요청된 리소스에 .jpg 또는 .css 확장이 있는 경우 ARR 서버에서 직접 제공됩니다. 마찬가지로 요청된 URL에 /images/가 포함된 경우 이 요청은 ARR 서버에서 제공됩니다. 다른 모든 요청은 ARR 서버 뒤에 있는 애플리케이션 서버로 전달됩니다.
계속하기 전에 ARR 서버에서 정적 콘텐츠를 사용할 수 있는지 확인합니다. ARR 서버에서 로컬로 콘텐츠를 사용할 수 있거나 공유 콘텐츠를 사용할 수 있습니다.
UI를 사용하여 URL 다시 쓰기 규칙을 변경하려면 다음을 수행합니다.
- IIS 관리자를 시작합니다.
- ARR(애플리케이션 요청 라우팅) 서버 그룹 정의 및 구성에서 만든 서버 팜 myServerFarm을 선택합니다.
- 다음 아이콘이 표시됩니다.
- 라우팅 규칙을 두 번 클릭합니다. 다음 확장이 있는 요청에 *.jpg 및 *.css 입력하면 텍스트 상자가 전달되지 않습니다. 여러 확장은 쉼표(,)로 구분됩니다. URL의 경로와 일치하려면 다음 패턴이 있는 요청에 */image/*를 입력하면 텍스트 상자가 전달되지 않습니다. 와일드카드 문자(*)는 경로 /image/의 앞과 뒤의 문자를 일치시킬 때 사용됩니다.
- 정적 이미지가 ARR 서버에서 제공되고 있는지 확인하려면 로그를 검사합니다. 기본적으로 로그는 .에 있습니다
c:\inetpub\logs\LogFiles\
. ARR 서버 뒤의 애플리케이션 서버에서는 로그 파일에 *.jpg, *.css 또는 */images/*를 참조하는 요청이 없어야 합니다.
명령줄을 사용하여 URL 다시 쓰기 규칙을 변경하려면 다음을 수행합니다.
관리자 권한으로 명령 프롬프트를 엽니다.
%windir%\system32\inetsrv
으로 이동합니다.다음을 입력하여 모든 URL 다시 쓰기 규칙을 지웁다.
appcmd.exe clear config -section:system.webServer/rewrite/globalRules
*.jpg 및 *.css 및 */images/*와 일치하는 경로가 있는 리소스에 대한 요청이 애플리케이션 서버로 전달되지 않도록 라우팅 규칙을 변경하려면 다음을 입력합니다.
appcmd.exe set config -section:system.webServer/rewrite/globalRules /+"[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True']" /commit:apphost
appcmd.exe set config -section:system.webServer/rewrite/globalRules /[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True'].match.url:"*" /commit:apphost
appcmd.exe set config -section:system.webServer/rewrite/globalRules /+"[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True'].conditions. [input='EXT_{URL}',negate='True',pattern='*.jpg']" /commit:apphost
appcmd.exe set config -section:system.webServer/rewrite/globalRules /+"[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True'].conditions. [input='EXT_{URL}',negate='True',pattern='*.css']" /commit:apphost
appcmd.exe set config -section:system.webServer/rewrite/globalRules /+"[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True'].conditions. [input='{URL}',negate='True',pattern='*/images/*']" /commit:apphost
appcmd.exe set config -section:system.webServer/rewrite/globalRules /[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True'].action.type:"Rewrite" /[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True'].action.url:"http://myServerFarm1/{R:0}" /commit:apphost
요약
이제 애플리케이션 요청 라우팅 UI를 사용하여 URL 다시 쓰기 규칙을 변경하여 3계층 배포 아키텍처 시나리오를 사용하도록 설정했습니다. 추가 애플리케이션 요청 라우팅 속성 및 기능은 ARR(애플리케이션 요청 라우팅) 연습을 사용하여 HTTP 부하 분산을 참조하세요.
ARR을 역방향 프록시로 사용하는 경우 응답 헤더 및 엔터티 본문을 다시 작성하는 기능이 있는 URL 다시 쓰기 버전 2와 함께 사용할 때 시나리오를 더욱 향상시킬 수 있습니다.