1. IIS 설치
https://www.google.com/search?q=windows+10+IIS
🔎 windows 10 IIS: Google 검색
www.google.com
IIS는 Proxy server로만 사용할 것이기 때문에 [인터넷 정보 서비스 > World Wide Web > 응용 프로그램 개발 기능] 항목은 전부 선택하지 않는다.
2. SSL 인증서 발급
https://www.google.com/search?q=iis+let%27s+encrypt
🔎 iis let's encrypt: Google 검색
www.google.com
win-acme을 사용하여 Let's Encrypt 에서 SSL 인증서를 발급받는다.
3. IIS Reverse proxy 설정
https://chongkong.github.io/iis-reverse-proxy
IIS에서 Reverese Proxy 설정하기 · chongkong blog
IIS에서 Reverese Proxy 설정하기 03 Dec 2016 Slack에 interactive button을 추가하기 위해서는 Slack에서 버튼 클릭 이벤트를 전달할 수 있는 endpoint가 필요하다. 이를 request_url이라 하는데 반드시 https url을 주
chongkong.github.io
3.1. Application Request Routing과 URL Rewrite 모듈 설치
Application Request Routing 링크
3.2. Proxy 설정
DESKTOP 홈 > Application Request Routing Cache > Server Proxy Settings
Enable proxy 체크
3.3. Port 설정
3.3.1. IIS 바인딩
Web Site 홈 > 바인딩
외부에 공개할 포트 바인딩을 추가한다.
예시로, Docker container의 8000번 포트가 expose 되어 있고, 내 도메인네임이 my.example.com일 때 외부 포트 8080으로 접속하려면 다음과 같다.
종류: IP주소: 포트:
[https] [지정하지 않은 모든 IP] [8080]
호스트 이름:
[my.example.com]
[v] 서버 이름 표시 필요
SSL 인증서:
[Let's Encrypt에서 발급한 인증서]
외부 포트를 도커에서 사용하는 포트와 같은 포트로 하면 충돌하기 때문에 다른 포트를 지정해야 한다. 차후 URL Rewrite로 연결할 것이다.
3.3.2. 방화벽 설정
제어판 > 시스템 및 보안 > Windows Defender 방화벽 > 고급 설정
또는, '고급 보안이 포함된 Windows Defender 방화벽' 검색 후 열기
인바운드 포트 규칙 만들기
그룹 정책 Management MMC 스냅인을 사용하여 고급 보안이 있는 Windows Defender 방화벽에서 규칙을 만들어 특정 포트에서 트래픽을 허용하는 방법을 알아봅니다.
learn.microsoft.com
앞서 바인딩한 포트들에 대해서 방화벽을 연다. TCP 80과 443은 IIS를 설치하면서 인바운드 규칙이 자동으로 등록되지만, Proxy port는 직접 등록해야 한다. 8080 포트에 대한 인바운드 규칙을 추가한다.
3.4. Reverse proxy 설정
Web Site 홈 > URL 재작성 > 규칙 추가 > 역방향 프록시
인바운드 규칙 서버 이름은, 로컬호스트의 docker container port 기입.
아웃바운드 규칙의 HTTP 응답의 링크 도메인 이름 재작성 체크
시작에는 위의 인바운드 규칙 서버 이름을, 끝에는 외부에서 접속할 Domain name을 기입.
인바운드 규칙
HTTP 요청이 전달되면 서버 이름 또는 IP 주소 입력:
[localhost:8000]
아웃바운드 규칙
[v] HTTP 응답의 링크 도메인 이름 재작성
시작:
[localhost:8000]
끝:
[my.example.com]
URL 재작성의 인바운드 규칙과 아웃바운드 규칙이 하나씩 생성된 것을 확인할 수 있다.
추가된 인바운드 규칙 > 편집 > 조건
조건 입력:
[{SERVER_PORT}]
패턴:
[8080]
{SERVER_PORT}는 IIS 서버 변수 중 하나로, 요청이 전송된 포트 번호를 저장하고 있다.
URL 검색 패턴으로는 포트 번호를 사용한 proxy 지정을 할 수 없으므로, 기본 패턴으로 그대로 두고 조건 구문을 사용한다.
추가된 아웃바운드 규칙 > 편집 > 작업
작업 속성
값:
[http{R:1}//my.example.com:8080/{R:2}]
URL Rewrite할 값을 지정한다. 외부로 나갈 호스트네임에 외부 포트를 추가하였다.
정리하자면,
인바운드 규칙에서, 모든 URL에 대하여 (8080 포트를 사용하는 경우만) localhost:8000으로 재작성했다.
아웃바운드 규칙에서, 8080 포트를 통해 응답을 재작성했다.
더 자세한 설정 사항은 레퍼런스를 참조해볼 수 있다.
4. 서버 재시작
DESKTOP 홈 > 서버 관리 > 다시 시작