[Synology NAS] Gitlab 설치 후, 역방향 프록시 설정하기 (Reverse Proxy Setting)

2020. 1. 2. 23:06프로그래밍(Programming)/환경설정 및 기타 (Environment & etc.)

1. (Forward) Proxy vs. Reverse Proxy

보통 프록시라 하면 아래와 같이 두 컴퓨터 사이에 위치하여 중계?를 해주는 일종의 서버라고 볼 수 있다.

 

아래 그림을 예로 살펴보자. A라는 아이가 있고, A의 엄마는 B라는 친구와 놀지 말라고 한다. 그런데 B라는 친구만 시계를 가지고 있어 현재 시간을 알 수 있다고 해보자. 그럼 A는 현재 시간을 알기 위해 B에게 물어봐야 하는데 엄마가 B와 놀지말라고 해서 직접 물어보지 않는다. 

 

Communication between two computers (shown in grey) connected through a third computer (shown in red) acting as a proxy. Bob does not know to whom the information is going, which is why proxies can be used to protect privacy. 출처: https://en.wikipedia.org/wiki/Proxy_server

Foward Proxy (또는 그냥 Proxy)는 내부에서 외부로 보내는 정보가 거쳐가는(?) 그래서 Forward라고 하는 것 같다.

Reverse Proxy(역방향 프록시)라는건 외부에서 들어오는 요청을 구분하여, 서버 내부에서 적절한 목적지(e.g., application)로 연결시켜주는 기능을 한다고 보면 된다.

 

따라서 Reverse Proxy를 이용하면 NAS_domain:port_number 처럼 port_number를 명시하여 접근하지 않아도, NAS의 여러 port에 연결되어 있는 application에 좀 더 쉽게 접근 가능하다.

 

2. 그래서 언제 유용한 것인가? 나는 왜 쓰고 있는가?

유용한 점은 여러 어플리케이션에 할당 된 포트 번호를 일일이 외울 필요가 없다는 것이다.

최근에는 NAS에 설치한 application이 많아 지면서 외워야 하는 port의 수가 늘어가고 있다. 현재 보유한 장치에는 gitlab, DSM, ftp 등의 service 들이 늘어나고 있고 되도록이면 random 한 port에 application을 할당하고 있다. 그러다보니.. 기억해야 하는 port의 수가 늘어가게 되고 결과적으로는 오랜만에 접속하려고 하면 기억이 나지 않는 일이 자주 발생했다.

 

 

3. 어떻게 설정할까?

일단 브라우저에서 DSM에 접속한다.

제어판 >> 응용 프로그램 포털>> 역방향 프록시

응용 프로그램 포털이 없으면 우측 상단의 "고급 모드" 클릭

아래에서 생성 버튼 클릭

 

여기서는 그림으로 설명하는 것이 이해가 잘 된다.

아래와 같이 외부로는 https로 NAS의 서브도메인을 노출하고, 외부에서 해당 서브도메인에 접근할 때 reverse proxy에서 내부 port로 연결시켜주면 된다. 

 

 

그 설정을 위해서는 아래와 같이 설정하면 된다.

1. 일단 외부에 노출할 서브 도메인을 설정해주고 (여기서는 git.stack.mynas.com)

  포트는 https를 이용하므로, 443으로 설정

2. 대상은 HTTP 프로토콜의 1234 번 포트로 접근 시켜준다.

 

 

 Reverse proxy를 사용하지 않을 경우, 내 NAS의 gitlab에 접근하기 위해서는 다음과 같이 입력해야한다.

http://stack.mynas.com:1234, 그러나 설정 후에는 https://git.stack.mynas.com 으로 포트번호를 적지 않아도 되어 주소를 쉽게 외울 수 있다.

 

하지만 이렇게만 설정할 경우, 인증서 문제가 발생한다. 

다음 글에서는 이런 인증서 문제를 어떻게 해결할 수 있는지 적도록 하겠다.