본문 바로가기
프로그래밍/운영체제, 서버

IIS에서 URL Rewrite를 사용해서 HTTP요청을 HTTPS로 리다이렉트하기

by pentode 2018. 8. 27.

이 글은 Windows 10의 IIS에서 테스트 되었습니다. URL 재작성을 사용하기 위해서는 웹 플랫폼 인스톨러를 통해서 URL 재작성 기능을 설치해야 합니다.

 

웹 플랫폼 인스톨러가 설치되어 일지 않다면 "Web Platform Installer" 에서 다운로드하여 설치합니다.

 

웹 플랫폼 인스톨러에서 URL 재작성 기능을 검색하여 설치합니다.

 

 

 

IIS 관리자에서 웹사이트를 선택하고 가운데 화면에서 "URL 재작성"을 더블 클릭합니다.

 

 

 

오른쪽 화면에서 "규칙 추가..."를 클릭합니다.

 

 

 

인바운드 규칙의 "빈 규칙" 을 선택하고 "확인" 버튼을 누릅니다.(빈 규칙을 더블 클릭해도 됩니다.)

 

 

 

인바운드 규칙 편집 상단의 이름과 URL 검색에 다음과 같이 입력합니다.

 

 

 

* 이름 : Redirect to HTTPS

* URL 검색

 - 요청한 URL(R) : 패턴과 일치

 - 사용(S) : 정규식

 - 패턴(T) : (.*)

 - 대/소문자 무시(I) : 체크

 

 

※ 참고
정규식 (.*) 는 프로토콜, 호스트명, 포트를 제외한 모든 형식의 URL을 말합니다. 예로 http://offbyone.tistory.com:8080/product/index.html  이 요청 되었다면 패턴 매치에 사용되는 부분은 product/index.html 입니다.

 

 

조건 영역에서 "논리 그룹화(G)""모두 일치" 를 선택하고 "추가..." 버튼을 누릅니다.

 

 

 

조건 추가 창에서 다음과 같이 입력합니다.

 

 

 

- 조건 입력(C): {HTTPS}

- 입력 문자열이 다음과 같은 경우 확인: 패턴과 일치

- 패턴(T): ^OFF$

- 대/소문자 무시 : 체크

 

※ 참고
이 부분은 처리할 요청을 선택하는 추가 조건을 지정합니다. IIS 서버 변수 {HTTPS}https 요청이면 ON, http 요청이면 OFF를 반환합니다. 여기서는 OFF인 경우 즉, http 요청인 경우만 처리하는 것입니다. 이 조건이 없으면 무한루프에 빠지게 됩니다.

 

작업 영역에서 다음과 같이 입력합니다.

 

 

 

- 작업 유형(Y): 리디렉션

- URL 리디릭션: https://{HTTP_HOST}/{R:1}

- 쿼리 문자열 추가(Q): 체크

- 리디렉션 유형: 기타 참조(303)

 

※ 참고
리다이렉트될 URL을 만드는 부분입니다. IIS 서버변수 {HTTP_HOST}는 도메인명까지만 나옵니다. 포트를 변경하고 싶다면 https://{HTTP_HOST}:8443/{R:1} 처럼 처리합니다. {R:1}은 정규식에서 그룹에 대한 역참조 입니다. 그룹은 소괄호로 둘러싼 부분입니다. 정규식 (.*) 는 하나의 그룹을 가집니다. 여기에서 {R:0}는 전체 입력 문자열을 나타내고, {R:1} 은 첫번째 그룹입니다. 그러므로 정규식 (.*) 에서 {R:0}{R:1}은 같은 값을 가지게 됩니다.

 

IIS관리자 오른쪽 화면에서 "적용"을 누르고 "규칙으로 돌아가기"를 누릅니다.

 

 

 

URL 재작성 룰이 추가된것을 확인할 수 있습니다.

 

 

 

이제 http:// 요청을 해보면 https:// 로 리다이렉트 되는 것을 확인할 수 있을 것입니다.

 

반응형