IIS에 ARR(Application Request Routing)을 설치하면 강력한 Reverse Proxy 서버가 된다.
그런데, URL 재작성 규칙을 제대로 모르면 안 떨어지는 감 아래에서 입 벌리고 있는 것과 같다.
>> 참조: offbyone.tistory.com/334
가장 기본적인 규칙 작성 방법 및 기능은 위 블로그에 나름 잘 나와 있는 것 같지만...
위 블로그에 있는 내용은 http로 들어오는 요청을 https로 바꿔서 다시 요청하도록 하는 기능이라 사실 Reverse Proxy 본연의 역할이라고 하기엔 좀 어정쩡한 내용이다. http를 https로 바꾸는 방법은 ARR 말고도 다양한 방법이 있으므로 굳이 ARR을 사용해서 적용할 필요는 없다(IIS 기본 기능인 HTTP Redirection이나 HSTS 같은 방법을 사용하는 것이 더 일반적이고 더 강력하다).
서버 팜을 만들고 라우팅하도록 하는 방법이 제대로 된 ARR 활용법이며, 그것이 곧 Reverse Proxy 역할이다.
서버 팜 만드는 방법은... 알고 나면 간단한데 아래 사이트에 (너무) 자세히 나와 있다.
여기서는 서버 팜 만드는 방법이나 서버 팜으로 라우팅되도록 하는 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}"이라고 써 주면 끝.
우왕 간단!?
'Tech: > Server·IIS' 카테고리의 다른 글
Visual Studio에서 HTTPS/SSL 디버깅이 안될 때 (0) | 2022.09.20 |
---|---|
[docker] MariaDB 10.4 my.cnf 인식 오류 (0) | 2022.08.03 |
ASP.NET Core의 JsonSerializer(System.Text.Json) 사용 관련 (0) | 2020.08.14 |
Docker 컨테이너 실행순서 조정하기 (0) | 2020.08.12 |
Docker 컨테이너 시간을 UTC+09:00로 설정하기 (0) | 2020.08.11 |