IIS에 ARR(Application Request Routing)을 설치하면 강력한 Reverse Proxy 서버가 된다.

그런데, URL 재작성 규칙을 제대로 모르면 안 떨어지는 감 아래에서 입 벌리고 있는 것과 같다.

 

>> 참조: offbyone.tistory.com/334

 

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

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

offbyone.tistory.com

 

가장 기본적인 규칙 작성 방법 및 기능은 위 블로그에 나름 잘 나와 있는 것 같지만...

위 블로그에 있는 내용은 http로 들어오는 요청을 https로 바꿔서 다시 요청하도록 하는 기능이라 사실 Reverse Proxy 본연의 역할이라고 하기엔 좀 어정쩡한 내용이다. http를 https로 바꾸는 방법은 ARR 말고도 다양한 방법이 있으므로 굳이 ARR을 사용해서 적용할 필요는 없다(IIS 기본 기능인 HTTP Redirection이나 HSTS 같은 방법을 사용하는 것이 더 일반적이고 더 강력하다).

 

서버 팜을 만들고 라우팅하도록 하는 방법이 제대로 된 ARR 활용법이며, 그것이 곧 Reverse Proxy 역할이다.

서버 팜 만드는 방법은... 알고 나면 간단한데 아래 사이트에 (너무) 자세히 나와 있다.

 

>> 참조: docs.microsoft.com/en-us/aspnet/web-forms/overview/deployment/configuring-server-environments-for-web-deployment/creating-a-server-farm-with-the-web-farm-framework

 

Creating a Server Farm with the Web Farm Framework

This topic describes how to use the Web Farm Framework (WFF) 2.0 to create and configure a web server farm from a collection of servers.

docs.microsoft.com

 

여기서는 서버 팜 만드는 방법이나 서버 팜으로 라우팅되도록 하는 URL 재작성 규칙 만드는 방법 등 기본적인 내용은 생략하고 조금 특이한 매핑 규칙이 필요한 내용만 살펴 보도록 하겠다.

 

 

예를 들어,

 

http://siteA.com/abc/ 또는 https://siteA.com/abc/로 들어온 요청을 https://siteA.com:5021/cde/와 같이 HTTPS 전용 별도 내부 서버 포트, URL로 매핑(URL 재작성)하고 싶을 때는?

 

이런 경우는 간단하다.

HTTPS 5021 포트를 사용하는 서버 팜을 하나 만든 다음, 와일드카드 규칙으로 "abc*"라고 쓰고 서버 팜 라우팅 경로에 "/cde{R:1}"이라고 써 주면 간단히 된다.

 

 

 

그런데, 위 규칙에서 조건을 조금 바꿔서... 하위 URL이 있는 경우,

즉, http://siteA.com/abc/123 또는 https://siteA.com/abc/123으로 들어온 요청을

내부 웹서버 팜 https://siteA.com:5021/123 으로 abc를 생략하고 매핑하려고 하면?

 

와일드 카드(*) 규칙으로는 매핑이 제대로 안된다. "abc" 및 "abc/"를 모두 "/"로 바꿔주는 와일드카드는 없으므로. 

 

  • abc => /
  • abc/ => /
  • abc/123 => /123

위 세 가지 모두를 포괄하는 규칙을 만들려면 정규 표현식을 써야 한다.

 

URL 부분인 "abc/123"에서 앞부분 "abc" 및 "abc/"를 제거하고 "123"만 남겨두어야 하므로 "^abc[/]?(.*)"과 같은 패턴 규칙을 사용해야 한다. "123"에 해당하는 괄호 부분 "(.*)"이 실제 규칙에서는 {R:1}로 자동 검색 매핑되기 때문에 서버 팜 라우팅 경로 부분에 "/{R:1}"이라고 써 주면 끝.

 

 

우왕 간단!?

 

 



Posted by 떼르미
,


자바스크립트를 허용해주세요!
Please Enable JavaScript![ Enable JavaScript ]