반응형


    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 clamp2x