본문 바로가기
AI

[IIS] http:// 요청을 https:// 로 Redirection 해주기 - ft. ChatGPT 도움

by 즐코딩 2023. 2. 15.
반응형

[IIS] http:// 요청을 https:// 로 Redirection 해주기

 

 

저도 서버에 관해서는 앞으로도 공부할 것이 너무나 많은 초보입니다. 어쩌다 보니 SSL 설치를 직접 시도해 보게 되었고 우여곡절 끝에 잘 설치를 했더랬습니다.(차후에 포스팅해보겠습니다)

 

다행히 windows 서버 환경이라서 그런지 인터페이스가 친숙해서 그나마 덜 버벅댔던 것 같습니다. https://로 보안 통신을 해주는 SSL은 443번 포트를 사용합니다. 이 사이트는 2개의 도메인을 사용 중입니다. 그래서 www가 붙는 도메인과 붙지 않는 도메인이 각각 80번 포트로 바인딩되어 있습니다.

 

SSL을 설치한 후에는 https 프로토콜로 www가 있는 경우와 없는 경우를 바인딩을 해두었습니다.

IIS의-사이트-바인딩-메뉴-창
IIS의 사이트 바인딩 메뉴 창

 

사이트 바인딩을 마치고 나서, 테스트를 해보니 서버에서 브라우저를 켜고 접속할 때는 https가 잘 동작을 하던데, 외부 사이트에서는 접속이 안되더라구요. 열심히 삽질을 한 다음에 알게 된 사실 하나는, 방화벽에서 80포트 외에는 모두 막아 둔 상태라는 걸 알게 되었습니다. 그래서 방화벽 정책변경을 통해서 마침내 https 프로토콜을 이용한 443번 포트 접속이 잘 이루어졌습니다.

 

이제 남은 건, 사용자들이 http://로 접근하는 경우 https://로 자동 리디렉션을 해주는 일이겠군요.

 

 

 

리디렉션 설정하기 - HTTP 리디렉션 말고, URL 재작성을 이용

 

IIS는 처음 접해보는 서버관리 프로그램이라서, 어찌할 바를 모르고 있었는데 IIS 관리 패널에서 <HTTP 리디렉션>이라는 아이콘이 존재하더라구요. 결론적으로 저것으로 세팅하는 건 아닌 것 같습니다. 물리적으로 서로 다른 서버를 사용할 때 사용하는 기능이라고 설명하는 것 같더라구요(정확치 않은 지식이라 카더라~로 썼습니다)

 

결국 삽질이 되었지만, 아무튼 HTTP 리디렉션 아이콘을 클릭하고 세팅을 시도해 봤습니다.(그냥 저의 기록입니다. 이걸로 진행하지 마세요!)

IIS의-HTTP-리디렉션-메뉴
IIS의 HTTP 리디렉션 메뉴

 

요청이 들어오면 https://mydomain 으로 하는 줄 알고 저렇게 써봤었는데요, 실행을 해보니 사이트가 뻗었습니다. 대상경로로 리디렉션이 너무 많이 요청되는 것이 원인이라고 하더라구요. 

HTTP-리디렉션-설정-창
HTTP 리디렉션 설정 창

 

서비스가 Live 되어 있는 상태라 화들짝 놀라서 얼른 설정을 취소했습니다.

 

검색을 해보니, "URL 재작성"이라는 아이콘을 이용해야 한다고 한다는 내용들을 다수 발견할 수 있었습니다.

 

URL 재작성 아이콘이 없는 경우, Web Platform Installer를 다운로드 받아서 설치하라는데...

MS 사이트에 가보니, 2022년 12월 31일 부로 사용하지 않는다고 합니다. 허걱.. 어쩌라구?

MS의-Web-Platform-Installer는-2022년-12월-31일부로-종료
MS의 Web Platform Installer는 2022년 12월 31일부로 종료

 

IIS 서버세팅 초보운전인데, 간신히 잡은 정보가 무용지물이 되는 순간이었습니다.

하지만 뭐 방법이 있겠지 싶어 다시 구글링을 통해서, URL 재작성 설치 가능한 페이지를 확인하게 되었습니다.

 

https://www.iis.net/downloads/microsoft/url-rewrite

 

URL Rewrite : The Official Microsoft IIS Site

Overview IIS URL Rewrite 2.1 enables Web administrators to create powerful rules to implement URLs that are easier for users to remember and easier for search engines to find. By using rule templates, rewrite maps, .NET providers, and other functionality i

www.iis.net

 

서버 컴퓨터를 확인해 보니 64비트. 그래서 64비트용으로 다운로드 받아서 설치를 일단 해봤습니다. 서버 관리 프로그램을 막 설치해도 서버를 내렸다가 올리는 게 아니라서 뭔가 편리하다는 느낌을 받았습니다. 그래서 비싸지만 윈도우 서버와 IIS를 사용하는 것인지도 모르겠다는 생각이 들었습니다.

URL-재작성-기능을-사용하기-위한-Installer-다운로드-및-설치
URL 재작성 기능을 사용하기 위한 Installer 다운로드 및 설치

 

x64 installer를 통해 해당 프로그램을 설치한 이후 IIS 패널을 다시 열어보면 [URL 재작성] 아이콘이 생겨 있었습니다.

이 기능은 왜 디폴트로 설치되어 있지 않은 것인지 궁금해져 왔습니다. 다 이유가 있겠죠 뭐.

 

URL 재작성 아이콘을 더블클릭 해주었습니다.

URL-재작성-아이콘이-생겼습니다
URL 재작성 아이콘이 생겼습니다

 

아이콘 더블클릭해서 실행하고, 우측 패널에서 '규칙 추가...' 클릭.

규칙추가 창에서 빈규칙 템플릿을 선택해 주고 [확인] 버튼을 눌러줍니다.

URL-재작성을-위한-규칙을-만들어줍니다
URL 재작성을 위한 규칙을 만들어줍니다

 

인바운드니까 서버로 들어오는 요청을 말하는 것이겠죠?

이름은 자유롭게 작성을 했고, 요청한 URL은 패턴과 일치, 그리고 정규식을 사용하는 것으로 세팅했습니다.

정규식 패턴값은 (.*)를 타이핑해서 넣었습니다. 얼마 전 수박 겉핥기로 공부했던 정규식인데, 이렇게 또 만나게 되는군요.

 

/(.*)/ 에서, 
. 은 any. 즉 아무 글자나 1개를 의미
*은 0개~복수개의 Match를 의미

즉, 어떤 문장이던 다 해당하는 정규식 패턴.

인바운드-요청들에-대해-패턴-검사를-조건으로-추가합니다.
인바운드 요청들에 대해 패턴 검사를 조건으로 추가합니다.

 

{HTTP}는 정확하게는 잘 모르겠지만, 정규식이라면 HTTP라는 글자에 해당합니다. ^OFF$는 OFF라는 글자에 해당할 텐데.. 아직은 HTTP 헤더나 이런 내용 등에 대해서 몰라도 너무 몰라서, 저 조건을 이해하는 게 아직도 막막한 상태긴 합니다. 꾸준히 공부해나가다 보면 언젠가는 무릎을 탁! 치면서 이해가 되는 날이 오겠죠 뭐.

규칙들을-생성해주고&#44;-[적용]-버튼을-클릭
규칙들을 생성해주고, [적용] 버튼을 클릭

 

아무튼 인터넷 구글링 후 답변을 하나 찾아서, 따라서 세팅을 한 후 [적용] 버튼을 클릭했습니다. 이제는 된 건가? 생각하고 브라우저로 호출해 보니, 웬걸... 바로 에러가 발생하는 게 아니겠습니까?

 

화들짝 놀라서 생성했던 인바운드 규칙을 바로 삭제했습니다. 서비스 중인 서버에서 뭔가 세팅 조작하는 건 이래 저래 심적 부담이 매우 큽니다.

 

현재, 서비스에는 2개의 도메인이 물려 있는 상태라서 그것인지... 도대체 어디서부터 잘못된 건지 확인할 방법이 별로 없더랬습니다. 인터넷 검색을 해봐도 그 답변이 그 답변 같고 말이죠.

 

누구한테 물어볼까 고민하다가, 그래 맞다 ! ChatGPT에게 물어보자! 생각해 보게 되었습니다!

 

 

 

ChatGPT에게 물어보기

 

ChatGPT에게는 질문을 체계적으로 자세하게 해주는 게 좋기 때문에 질문부터 정리했습니다. 그리고 반복적으로 계속 비슷한 질문을 한다면, 맥락을 이해하는 GPT가 뭔가 커다란 힌트를 줄 수 있지 않을까? 하는 기대가 컸습니다.

/*

질문1

현재 윈도우 서버 IIS를 사용해서 서비스를 하고 있음.

도메인은 kxxxxxx.org를 사용중

1개월 이후 도메인이 kxxxxs.or.kr로 변경될 예정.
당분간은 2개의 도메인을 모두 사용하는 형태.

kxxxxs.or.kr은 SSL을 설치함.

http://kxxxxs.or.kr 로 접속하는 경우 https://kxxxxxs.or.kr로 자동 디렉션이 되도록
IIS를 세팅하는 방법은?

*/

 

ChatGPT를 좀 더 쉽게 사용해 보고자 '프롬프트 지니'라는 크롬 익스텐션을 사용했습니다.

ChatGPT에게-URL-재작성과-관련하여-질문하고-얻은-대답
ChatGPT에게 URL 재작성과 관련하여 질문하고 얻은 대답

 

아까 검색한 내용은 패턴을 "^OFF$"로 주라던데, ChatGPT는 "^ON$"으로 주라는 군요. 음... 누가 맞는 거임?

 

질문의 맥락을 이해하는 ChatGPT와 대화를 하듯 더 다양한 조건을 물어보기로 합니다. 저도 IIS가 처음이라, 공부가 필요해서 자꾸 물어봤습니다.

현재 IIS를 사용하여 웹사이트를 서비스하고 있음.
웹서비스는 2개의 도메인을 적용해서 사용 중.

1. kxxxx.org
2. kxxxxxxxs.or.kr

사용자가 kxxxxx.org로 접속하는 경우 kxxxxxs.or.kr로 리디렉션 시키는 IIS 세팅 방법은?

ChatGPT에게-한번-더-구체적으로-질문했습니다
ChatGPT에게 한번 더 구체적으로 질문했습니다

 

두 번의 답변 모두 'URL 재작성'과 관련한 답변으로 보입니다. 지금 Try 하고 있는 시도 자체는 주소를 제대로 찾아서 하고 있다는 생각이 들었습니다. 내가 할 줄 몰라서 그렇지...

 

두 번째 질문을 제가 잘못한 것 같아서, 한번 더 ChatGPT에게 질문을 해봅니다.

http://kxxxxxs.or.kr 로 접속하는 경우 https://kxxxxxs.or.kr로 자동 디렉션이 되도록 IIS를 세팅하는 방법은?
단, 이때 http://kxxxxx.org로 접속하는 경우에는 계속 http://kxxxxx.org로 접속이 되도록 한다.

이전-질문들과-중복되면서-더-구체적으로-질문을-했습니다
이전 질문들과 중복되면서 더 구체적으로 질문을 했습니다

 

세 번째 답변부터 실행해 보기로 합니다. 까짓 거 해보는 거죠 뭐. 추천받은 대로 세팅 후 적용해 보았습니다.

ChatGPT에게-들은-답을-바탕으로-인바운드-규칙을-설정해봅니다
ChatGPT에게 들은 답을 바탕으로 인바운드 규칙을 설정해봅니다

 

찬찬히 따라 하면서, 똑 같이 설정을 했음에도 불구하고 http:// 요청을 https://로 리디렉션 해주는 기능은 제대로 수행이 되지 않았습니다. 서너 번 반복해 보면서 어디에서 틀린 것일까 고민을 해봅니다. 구글링을 해보아도, ChatGPT의 결과와 비슷한 내용만 나오는 것 같습니다.

 

한 시간 정도 삽질을 하다가 안 되겠다 싶어서, 세팅에 사용된 정규식들을 파헤쳐 보면서 이해를 하고자 정규식을 샅샅이 분석해 보면서 벼락치기 공부를 했습니다. 그러다 잘은 모르겠지만, IIS세팅에 '정규식'과 '와일드카드' 형태로 구분이 되는 것을 보고, 오늘 삽질한 내용 2가지를 섞어 보기로 합니다.

 

ChatGPT에서는 '와일드카드'를 사용하라고 했지만, '정규식' 사용으로 변경을 해보았습니다. 그리고 패턴도 * → (.*)로 변경을 해보았습니다.

 

내용을 저장하고, 실행을 해보니 이번에는 제대로 동작함. 오오오.. 뒷걸음질 치다 쥐 잡은 느낌이긴 하지만, 같은 화면을 두 시간 정도 쳐다보면서 궁리를 해보니 다소 보는 눈이 조금 생긴 것 같았습니다.

 

 

 

마치며

 

ChatGPT가 알려준 내용 중에서, 사용 부분과 패턴 부분만 변경을 해본 결과입니다.

ChatGPT가-알려준-내용과-이전에-구글링-했던-내용들로-완성한-최종-인바운드-규칙
ChatGPT가 알려준 내용과 이전에 구글링 했던 내용들로 완성한 최종 인바운드 규칙

 

새로 사용할 도메인 kxxxxxs.or.kr을 http로 접근하는 경우, 자동으로 https로 리디렉션이 잘 수행됩니다. 원하는 결과를 얻었습니다. IIS를 처음 만져보는 상태에서 두어 시간 삽질을 해보면서 운 좋게 해결을 한 것으로 생각합니다.

 

서버 날라가거나 서비스 중단 될까 봐 마음 졸인 건 덤이지만, 아무튼 이렇게 또 한건 해결하면서 서버의 세계에 대해서 조금 경험을 해보게 되었습니다.

 

즐거운 코딩생활, 즐코딩.

KINcoding.

 

반응형

댓글