IIS 역방항 프록시(Reverse Proxy) 설정하기



    IIS으로 웹 사이트를 구축하는 경우에는 바인딩 설정을 통해 웹 사이트 주소를 내 마음대로 연결할 수 있습니다. 하지만, IIS 외에 추가적인 서버를 이용하거나 프로그램을 이용하는 경우 기본적으로 80포트를 할당 받지 못해 다른 포트번호를 이용해서 서비스를 하게 됩니다.





    그 대표적인 예가 베리즈웹쉐어, 서브소닉, PLEX 정도인데 이것들 모두 자체 서버프로그램을 사용하며, 포트 번호를 80포트가 아닌 다른 포트 번호를 사용하여 웹 접속을 지원합니다. 개인이 가지고 있는 도메인을 연결할 수 없어서 접속할 때 마다 간단하게 접속하기 어렵습니다.



    도메인이란게 접속하기 쉬워야 하는데 매번 http://IP주소:포트번호 형태로 외우고 다닐 수 없습니다. 물론 내 컴퓨터이기 때문에 저 정도는 외울수 있습니다만, 주변에 다른 사람들도 사용하는 경우(또는 관련 서비스를 하는 경우)에는 접속하기 쉬운 도메인 주소를 가지고 사용할 수 있도록 하는 것이 훨씬 유용합니다.


    즉, 이번 시간에 시도하자고 하는 것은 이렇습니다.

    http://192.168.0.99:8080 과 같은 IP주소:포트번호 형태의 접속주소를 내가 보유하고 있는 도메인 http://sub.mydomain.com으로 연결하였을 때 접속되게끔 하고 싶습니다. http://sub.mydomain.com으로 접속하면 http://192.168.0.99:8080 의 주소로 접속할 수 있는 방법은 두가지가 있는데 간략하게 소개하자면 웹 포워딩 방식과 역방향 프록시 방식입니다.


    1. 웹 포워딩

    웹 포워딩은 말그대로 대신 연결을 해 줄때 사용합니다. http://sub.mydomain.com을 입력하면 지정된 주소로 리디렉션을 해주게 되는데 주소 고정형과 주소 노출형으로 나뉘어져 있습니다.

    주소 노출형의 경우에는 http://sub.mydomain.com으로 연결을 해도 원래의 접속 주소가 표시됩니다. 

    주소 고정형의 경우는 http://sub.mydomain.com하면 주소가 바뀌지 않지만, iframe 같은 방법처럼 간접적으로 사이트를 표시하게 되는데 레이아웃이나 몇몇의 안정성이 깨지는 경우가 있습니다.


    2. 역방향 프록시

    프록시라는 자체가 연결을 보조해주는 도구 같은 역할인데, 원래는 클라이언트 입장에서 다른 프록시 서버를 통해 접속을 우회하게끔 만들어준다고 보시면 됩니다. 즉 외부로 나가는 정보를 가려주거나 바꿔서 정보를 제시해주는 역할을 합니다.

    하지만, 역방향 프록시는 나가는 신호를 바꿔주는 것이 아니라 들어오는 정보를 바꿔서 표현을 해줍니다.

    즉, 접속 주소 중 192.168.0.99:8080이라는 부분은 sub.mydomain.com으로 완전히 대체시켜서 보여주게끔 할 수 있습니다. 클라이언트 입장에서는 주소의 정보를 다른 주소로 보여지게끔 받아들이기 때문에 역방향 프록시라고 할 수 있습니다.

    역방향 프록시의 경우에는 원래의 접속주소를 감추기 위한 보안적인 툴인데, 여기서도 유용하게 활용할 수 있습니다.


    이번 포스팅에서는 역방향 프록시로 연결하는 방법을 보여드리고자 합니다. 

    위에도 적어놓았지만, 역방향 프록시의 장점은 접속주소의 일부분을 완전히 대체할 수 있게끔 합니다.

    즉, http://192.168.0.99:8080/index.html 같은 주소에서 192.168.0.99:8080 대신에 sub.mydomain.com란 주소로 대신 부여주는 방법으로 http://sub.mydomain.com/index.html 로 접속하게끔 만들어 줄 수 있습니다.


    이 역방향 프록시를 이용하는 방법은 웹서버들마다 지원하고는 있지만, 기본적으로 윈도우에서 사용할 수 있도록 설정해보도록 하겠습니다. 위에 적은 서버 프로그램들을 일반적으로 윈도우에서 사용하는 분들이 많을테니 유용하게 사용할 수 있다고 생각합니다.


    앞으로 포스팅에 적을 내용은 서브소닉을 예를 들어 설명하도록 하겠습니다.




    IIS를 이용해서 역방향 프록시 준비하기


    윈도우에 기본적인 웹 서버인 IIS를 통해 역방향 프록시를 이용할 수 있도록 필요한 것들을 설치합니다.


    IIS를 사용하기 위해서는 제 블로그 글을 처음부터 읽어보시는 것을 추천드리지만 기본적으로 필요한 설정들은 이 글을 참고 하시면 됩니다.



    먼저 IIS내에서 웹 플랫폼 설치 관리자를 통해서 응용프로그램 요청 라우팅을 설치하여야 합니다.




    응용 프로그램 요청 라우딩 - Application Request Routing (이하 ARR) 이란 프로그램을 통해서 역방향 프록시를 설정할 수 있습니다. 웹 플랫폼 설치관리자에서 응용 프로그램 요청 라우팅을 검색합니다.


       


    응용 프로그램 요청 라우팅은 2.5 버전 또는 3.0베타 버전을 설치합니다. 베타버전이라 찝찝하다는 분도 있을텐데 정작 사용하는 기능인 역방향 프록시를 사용하는데에는 큰 차이가 없습니다. 원하는거 설치하면 됩니다.


    저는 3.0베타 버전을 이용하기로 하였습니다.




    설치할 때 Web Farm Framework 1.1이 설치가 됩니다. 이것 외에도 필요한 프로그램이 있으면 자동으로 같이 설치 됩니다.





    설치가 완료가 되면 언제나 그랬듯이 IIS를 껐다가 다시 실행해줍니다.

    그럼 IIS 설정 메뉴에 Application Request Routing Cache 라는 새로운 설정이 생긴 것을 확인할 수 있습니다. 여기서 몇가지 설정을 합니다.




    우측에 작업메뉴에서 Server Proxy Settings 항목을 클릭합니다.


    그럼 다음과 같은 화면이 나오게 됩니다. Enable proxy를 체크합니다.


       


    추가로 세팅할 부분이 있다면 Proxy Setting 항목에서 Time-Out 항목을 적당하게 늘려주시면 됩니다. (저의 경우는 1200초로 설정하였습니다.) 이 항목이외에는 딱히 추가로 설정할 부분은 없습니다.




    IIS에서 서비스를 연결시킬 새 사이트 만들기


    IIS에서 새 사이트를 만듭니다.

    기존에 있던 서버의 페이지와 연결하는 것이기 때문에 실제로 사이트를 구축할 필요도 없으며 Index 페이지도 필요하지 않습니다. 중요한 것은 호스트 이름에서 연결시킬 도메인을 정확하게 설정하면 됩니다.


    이번 포스팅에서 예로 든 서브소닉에서 개요입니다.

    기본적으로 서브소닉에서 기본으로 제공하는 접속주소는 http://192.168.0.14:4040입니다. 이 접속주소를 http://music.studyforus.com으로 변경하고 그 주소를 사용하도록 설정하도록 하겠습니다.

    도메인 구입과 서브도메인 생성하는 것은 다루지 않도록 하겠습니다. (블로그에 소개되어 있습니다.)


    새 사이트를 만드는데 사이트 이름, 실제 경로는 아무거나 설정하면 됩니다. 

    IP주소와 포트 포트는 다음과 같이 설정하세요. 그리고 호스트 이름에서 도메인을 연결해주고 확인을 눌러줍니다.




    이제 새로운 사이트가 만들어 졌네요. 역방향 프록시를 사용하기 위해서는 URL 재작성을 사용합니다. 만약, URL 재작성이 설치되어 있지 않은 경우에는 다음 글을 참고하세요.




    URL 재작성 메뉴에서 우측에 규칙추가를 클릭합니다.




    그리고 인바운드 및 아웃바운드 규칙에서 역방향 프록시를 사용합니다.



    URL 재작성만 이용하는 느낌이라, ARR을 설치할 필요가 없어보이지만 ARR을 설치하기 전에는 인바운드 및 아웃바운드 규칙에서 역방향 프록시 항목이 존재하지 않습니다. 실제로 ARR을 설치하기전에 URL재작성에서 규칙 추가 화면을 캡쳐해 보았습니다.







    역방향 프록시 규칙을 추가하게 되면 다음과 같은 간단하게 설정을 도와주는 창이 뜹니다.




    설정항목은 두가지입니다.


    인바운드 규칙

    해당 사이트에 접속이 되면 어디로 접속을 돌릴 것인지 입력합니다. SSL 사용여부에 따라서 SSL 오프로드 사용을 체크합니다.


    아웃바운드 규칙

    시작과 끝으로 나누어 지는데 시작은 실제로 접속하는 주소가 되고 끝은 접속자에게 보여주는 주소가 됩니다.

    즉, 192.168.0.15:4040/web/index.html 과 같은 주소는 "시작"에 해당합니다. 이 주소대로 접속을 하는 것이죠. 하지만, 실제로 사용자에게 보여지는 주소는 music.studyforus.com/web/index.html 과 같은 "끝" 주소로 보여주게 됩니다.


    역방향 프록시 역할 추가를 통해 URL 재작성 규칙이 자동으로 입력이 됩니다. 편리하네요.




    이제 이것으로 모든 설정을 완료 하였습니다. 이제 실제로 접속해 볼까요?


    http://music.studyforus.com로 접속을 하면 서브소닉이 실행됩니다. 실행되는 것이 중요한게 아니라 접속주소가 더 중요합니다. 접속된 주소를 보면 제대로 주소가 192.168.0.14:4040 대신 music.studyforus.com으로 설정되어 있는 것을 확인할 수 있습니다.


    이 index 페이지 뿐만 아니라 페이지를 이동하거나 연결을 하여도 페이지에서 도메인을 연결한 것과 같이 music.studyforus.com 의 주소는 바뀌지 않고 사용이 가능합니다.




    접속주소만 간단하게 설정하면 활용할 수 있는 방향이 더 많아 집니다.

    예를 서브소닉 들었는데 IP주소:포트번호 방식으로 자체서버를 운영하는 프로그램들은 도메인과 연결을 하여 접속주소를 간단하게 만들어 줄 수 있도록 할 수 있습니다.


    여담이지만 PLEX의 경우에는 프록시 설정 말고도 리디렉션 설정을 한번 더 해줘야 하는데, 조만간 포스팅하도록 하겠습니다.










    Posted by Study For Us clamp2x

    • 2015.02.08 12:19

      비밀댓글입니다

      • Favicon of http://studyforus.tistory.com BlogIcon Study For Us clamp2x
        2015.02.08 12:37 신고

        구체적으로 어떤 부분이 문제가 있는지 알수 있을까요? 역방향 프록시를 받는 서버와 연결하는 서버가 같은 서버라면 문제 없이 사용중입니다. ^^
        다만 역방향으로 연결하려는 주소가 다른 서버인 경우에는 시간 설정이 같아야하지 않을까요?
        조금 더 자세한 설명 부탁드립니다. ^^


    • 2015.02.08 13:32

      비밀댓글입니다

      • Favicon of http://studyforus.tistory.com BlogIcon Study For Us clamp2x
        2015.02.08 14:12 신고

        비공개 사이트에서 다양한 기기로 접속이 일시에 이루어 지기는 힘든일입니다.
        일정시간마다 그렇게 된다면 접속자 정보가 제대로 전달이 이루어 지지 않는것 같습니다. 혹시라도 분석도구의 오류를 한번 생각해보는것도 좋을것 같아요.
        그리고 역방향 프록시와 다른 프록시 서버를 이용하는 것은 전혀 다릅니다.
        다른 프록시 서버를 사용하는 경우라면 그 프록시 서버를 통해 접속이 이루어 지는 듯합니다.
        원인은 다양한데 님 접속시에 상주해 있던 봇들이 같이 침투하는 경우도 있고합니다.
        구글 아날리틱스를 이용해서 정확한 상황을 보는게 좋을듯 합니다. ^^


    • 2015.02.08 14:28

      비밀댓글입니다

      • Favicon of http://studyforus.tistory.com BlogIcon Study For Us clamp2x
        2015.02.08 16:22 신고

        나중에 접속주소 형태나 평소 접속인원등을 알려주시면 더 파악하기 쉬울것 같아요! ^^


    • 2015.02.08 17:29

      비밀댓글입니다

      • Favicon of http://studyforus.tistory.com BlogIcon Study For Us clamp2x
        2015.02.08 17:49 신고

        혹시 님이 다른 기기로 접속해도 같은 걀과가 나오나요?
        그리고 님이 접속을 끊으면 다른 사용자도 접속이 끊기나요?
        마지막으로 서버는 어떤 서버인가요?
        일단 요렇게만 알면 원인이 내부적인지 외부적인지 알기 쉽겠네요~^^


    • 2015.02.08 18:09

      비밀댓글입니다

      • Favicon of http://studyforus.tistory.com BlogIcon Study For Us clamp2x
        2015.02.08 18:28 신고

        다른 기기로 접속한다면 그 블로그 주소를 알거나 접속해본적 있는 사람들이 접속할 수도 있는건데 님이 접속한 시간에 "동시에"접속하는 것이 제일 이상한 부분이군요.
        혹시 접속주소 자체가 기본적인 블로그 주소인가요? 그리고 그 콘텐츠는 암호를 입력해야 볼 수 있나요?


    • 2015.02.08 18:43

      비밀댓글입니다

      • Favicon of http://studyforus.tistory.com BlogIcon Study For Us clamp2x
        2015.02.08 18:49 신고

        대략 몇명 정도가 동시접속으로 접속되나요?
        일단 상황으로보면 스팸봇이나 기타 봇들이 남아있다가 님이 접속해서 활성화가 되면 같이 접속이 되는 거 같기도 합니다. 접속자들 지역을 확인해 보셨나요?


    • 2015.02.08 19:07

      비밀댓글입니다


    • 2015.02.08 19:11

      비밀댓글입니다

      • Favicon of http://studyforus.tistory.com BlogIcon Study For Us clamp2x
        2015.02.08 19:17 신고

        나머지는 접속주소를 알고 있는 실제 접속자인듯 싶습니다. 다만 접속기기에 스팸봇이 설치되어 있다먄 조금 다른 이야기가 되겠네요.
        그리고 맥킨토시 크롬의 경우에는 서버나 블로그 주소에 상주해 있는 스팸봇이 확실해보입니다.
        이 접속자들로 인해서 스팸글이나 댓글이 작성된다거나 하는 직접적인 피해가 없다면 크게 걱정할 일은 없어보입니다.
        그리고 다른 실 접속자가 신경쓰이신다면 컨텐츠들을 비공개로 바꾸고 지인들 아이디를 블로그 그룹 권한에 포함시켜 읽기가 가능하도록 따로 지정하는 것을 추천드립니다.
        저도 이렇다 확답을 내리기 어려워 제 생각이 잘못됐을수도 있습니다. ^^ 그래도 제가 막 이것저것 질문했는데 짜증내지 않고 답변해주셔서 감사합니다. ^^


    • 2015.02.08 19:27

      비밀댓글입니다

      • Favicon of http://studyforus.tistory.com BlogIcon Study For Us clamp2x
        2015.02.08 19:31 신고

        네 맥킨토시 크롬을 제외하면 가의 실사용자로 취급하셔도 됩니다.
        그리고 블로그 스팟도 그룹권한이 있는지 모르겠는데 워드 프레스나 티스토리 같은 개방적인 블로그 스타일은 모두 그룹 권한이 있습니다. 블로그 서비스 중에 블로그 스팟이 자유도가 가장 높은걸로 알고 있는데 당연히 있을겁니다.
        도움이 되었으면 합니다. ^^


    • 2015.02.08 19:50

      비밀댓글입니다

    • Favicon of http://basixblog.tistory.com BlogIcon Basix
      2015.07.11 13:41 신고

      웹 플랫폼 설치 관리자가 없습니다.

      • Favicon of http://studyforus.tistory.com BlogIcon Study For Us clamp2x
        2015.07.11 13:44 신고

        맨처음에 IIS를 설치하실 때 설치하셔야 합니다.
        http://studyforus.tistory.com/8

        만약, 설치를 못한경우
        http://www.microsoft.com/web/downloads/platform.aspx
        여기서 설치하시면 됩니다.^^


    • 2017.01.30 19:14

      비밀댓글입니다

      • Favicon of http://studyforus.tistory.com BlogIcon Study For Us clamp2x
        2017.01.30 19:16 신고

        리다이렉트 기능을 이용하면 될것 같습니다.
        비슷한 기능을 사용할 수 있어요. ^^


    • 2017.01.30 19:40

      비밀댓글입니다

      • Favicon of http://studyforus.tistory.com BlogIcon Study For Us clamp2x
        2017.01.31 09:18 신고

        네. IIS에서 하는 리다이렉트는 서버단에서 하는 작업이라 아파치의 Proxypass와 비슷한 기능을 합니다. ^^


    • 2017.11.22 16:08

      비밀댓글입니다

      • Favicon of http://studyforus.tistory.com BlogIcon Study For Us clamp2x
        2017.11.22 19:26 신고

        아무래도 도메인이 있어야 연동이 편리합니다.
        IP주소와 포트번호 조합이라면 얼추 가능할 것 같기도 한데 불안정한 방법입니다. ^^


    • 2017.11.23 12:52

      비밀댓글입니다

티스토리 툴바