URL 다시 쓰기 모듈 2.0 사용

작성자 : Ruslan Yakushev

소개

설명서의 이 섹션은 IIS 7의 URL 다시 쓰기 2.0에 적용됩니다.

IIS 7 이상용 URL 2.0은 버전 1.1의 모든 기능을 포함하고 .NET 확장성 및 아웃바운드 응답 다시 쓰기에 대한 지원을 추가하는 증분 릴리스입니다. 보다 구체적으로는 다음을 위해 사용할 수 있습니다.

  • .NET으로 작성된 다시 쓰기 공급자를 사용하여 복잡한 다시 쓰기 논리 구현
  • 응답 HTML에서 웹 애플리케이션에서 생성된 URL을 보다 사용자에게 친숙하고 검색 엔진에 친숙한 URL로 바꿉니다.
  • 역방향 프록시 뒤에 있는 웹 애플리케이션에서 생성된 HTML 태그의 링크를 수정합니다.
  • 정규식 패턴 일치를 사용하여 HTTP 응답의 콘텐츠를 수정합니다.
  • HTTP 요청 및 응답 헤더 및 IIS 서버 변수를 수정합니다.

기능

URL 다시 쓰기 2.0에는 다음과 같은 주요 기능이 포함됩니다.

  • 사용자 지정 다시 쓰기 공급자 (RTW의 새로운 기능). 정규식 패턴으로 URL 다시 쓰기 논리를 표현할 수 없거나 web.config 파일 외부에 저장된 데이터(예: SQL 데이터베이스 또는 텍스트 파일)에 따라 다시 쓰기 결정을 내려야 하는 경우 다시 쓰기 공급자를 사용할 수 있습니다. 고객 다시 쓰기 공급자는 모든 .NET 언어로 구현할 수 있습니다.
  • 규칙 기반 응답 재작성 엔진. 아웃바운드 규칙은 응답의 일부를 비교할 내용과 비교에 성공한 경우 수행할 작업의 논리를 표현하는 데 사용됩니다. 웹 서버 및 사이트 관리자는 아웃바운드 규칙을 사용하여 복잡한 응답 다시 쓰기 논리를 정의할 수 있습니다.
  • 특정 HTML 태그의 콘텐츠 내에서 다시 작성합니다. 특정 일치 항목에 대한 전체 응답을 검사하는 대신 a, img> 등과 같은 <<>특정 HTML 태그 내부만 표시하도록 규칙을 구성할 수 있습니다. 이렇게 하면 패턴이 크게 간소화되고 콘텐츠에 규칙을 적용하는 프로세스가 전체 응답에 패턴을 적용하는 것과 비교하면 훨씬 빠릅니다.
  • 아웃바운드 규칙에 대한 사전 조건입니다. 모든 응답에 다시 쓰기 규칙을 적용하는 것은 비용이 많이 드는 작업이며 대부분의 경우 필요하지 않습니다. 사전 조건은 응답 메타데이터를 검사 아웃바운드 규칙 평가를 적용해야 하는지 여부를 결정하는 데 사용됩니다.
  • 서버 변수 및 HTTP 요청 헤더를 다시 작성합니다. 다양한 IIS 서버 변수 및 HTTP 요청 헤더는 다시 쓰기 규칙을 사용하여 설정할 수 있습니다.
  • HTTP 응답 헤더를 다시 작성합니다. 아웃바운드 다시 쓰기 규칙을 사용하여 기존 HTTP 응답 헤더를 수정하거나 새 HTTP 응답 헤더를 설정할 수 있습니다.
  • 서버 변수에 대한 허용 목록입니다. 분산 재작성 규칙이 웹 애플리케이션의 보안 또는 런타임 동작에 영향을 줄 수 있는 IIS 서버 변수를 실수로 또는 의도적으로 수정하지 못하도록 하려면 이제 수정 가능한 서버 변수를 허용 목록에 명시적으로 추가해야 합니다.
  • HtmlEncode 함수입니다. 아웃바운드 다시 쓰기는 종종 신뢰할 수 없는 데이터(예: 쿼리 문자열 또는 HTTP 헤더)를 사용하여 HTTP 응답에 삽입할 대체 문자열을 빌드할 수 있습니다. 이러한 경우 HtmlEncode 함수를 사용하여 클라이언트 쪽 스크립트가 응답에 삽입되지 않도록 해야 하며, 이로 인해 사이트 간 스크립팅 취약성이 발생할 수 있습니다.
  • 규칙 조건에서 캡처 그룹을 추적합니다. URL 다시 쓰기 1.1의 조건 백 참조 논리는 마지막으로 일치하는 조건에 대해서만 작동했습니다. v2에서는 일치하는 모든 조건에 대해 작동하도록 백 참조 논리를 구성할 수 있습니다.
  • 검색 엔진 최적화에 대한 규칙 템플릿 (RTW의 새로운 기능). 세 가지 새 규칙 템플릿을 사용하면 사이트의 웹 페이지에 정식 URL을 사용하도록 적용하는 리디렉션 규칙을 매우 쉽게 만들 수 있습니다.
  • 역방향 프록시 규칙 템플릿 (RTW의 새로운 기능). 이 템플릿을 사용하여 역방향 프록시 구성을 구현하는 인바운드 및 아웃바운드 다시 쓰기 규칙을 매우 빠르게 생성할 수 있습니다.
  • 다시 작성된 URL의 로깅입니다. 원래 요청된 URL을 로깅하는 대신 IIS W3C 로그에서 다시 작성된 URL을 기록하도록 다시 쓰기 규칙을 구성할 수 있습니다.
  • IIS 관리자에서 사용자 인터페이스가 업데이트되었습니다. 사용자 인터페이스는 모듈 구성을 더 잘 나타내고 규칙 다시 쓰기 및 다시 쓰기 조건 구성과 같은 일반적인 작업을 간소화하기 위해 크게 개선되었습니다.

모듈 설치

모듈 홈페이지의 링크를 사용하여 URL 다시 쓰기 2.0을 다운로드합니다. https://www.iis.net/extensions/urlrewrite

참고

  • v1.0 및 v1.1과 같은 이전 버전의 URL 다시 쓰기가 이미 설치된 경우 v2.0으로 업그레이드됩니다.
  • URL 다시 쓰기 2.0의 RC 버전이 이미 설치된 경우 RTW 버전으로 업그레이드됩니다.

알려진 문제

  1. 응답 다시 쓰기는 정적 압축에서 작동하지 않습니다. 응답 다시 쓰기를 사용하려면 IIS 정적 압축을 사용하지 않도록 설정해야 합니다.
  2. rewriteBeforeCache를 사용하는 경우 아웃바운드 규칙은 청크로 인코딩된 전송 응답에 적용되지 않습니다. 청크 분할된 전송 인코딩된 응답을 다시 작성해야 하는 경우 rewriteBeforeCache 를 false로 설정합니다.

확장성 샘플 설치

URL 다시 쓰기 확장성 샘플에는 .NET 어셈블리와 이러한 공급자를 구현하는 소스 코드가 포함됩니다.

  • DbProvider - 이 공급자를 사용하여 저장 프로시저를 실행하여 SQL Server 데이터베이스 테이블에서 다시 쓰기 매핑을 검색할 수 있습니다.
  • FileMapProvider - 이 공급자를 사용하여 텍스트 파일에 저장된 다시 쓰기 매핑을 검색할 수 있습니다.
  • FileContainsProvider - 텍스트 파일의 문자열이 공급자의 입력 문자열의 부분 문자열인 경우 이 공급자를 사용하여 검사 수 있습니다.

MSDN 코드 갤러리에서 URL 다시 쓰기 확장성 샘플을 다운로드합니다.

모듈 사용

이 문서에서는 URL 다시 쓰기 v2.0의 기능을 설명하고 이를 사용하여 일반적인 재작성 시나리오를 수행하는 방법을 설명합니다.

연습

기능 참조