집 서버에 도메인 붙이기: Reverse Proxy 이야기
집에 둔 서버에 서비스가 하나둘 늘면 곧 이런 고민이 생깁니다. “이걸 밖에서 어떻게 접속하지?”
기계 안에서는 서비스마다 다른 문을 열어 두고 있습니다. 어떤 건 몇 번 포트, 어떤 건 다른 번호입니다. 하지만 밖에서 접속하는 사람에게 포트 번호를 외우게 할 수는 없습니다. 필요한 건 사람이 기억하기 좋은 주소, 곧 도메인입니다. 그리고 그 도메인 하나로 여러 서비스를 나눠 보내주는 장치가 필요합니다. 그게 Reverse Proxy입니다.
Proxy, 그리고 두 방향
Proxy는 '대리인’이라는 뜻입니다. 요청을 대신 주고받아 주는 중간자입니다. 그런데 이 대리인이 누구 편에 서느냐에 따라 이름이 갈립니다.
Forward Proxy는 클라이언트, 즉 사용자 편에 섭니다. 사용자가 바깥으로 나가는 요청을 대신 내보내 줍니다. 회사에서 직원들의 인터넷 접속을 한 곳으로 모아 통제하거나, 사용자의 신원을 가리는 데 씁니다. 요청이 '나가는 쪽’에 있는 문지기입니다.
Reverse Proxy는 반대로 서버 편에 섭니다. 바깥에서 들어오는 요청을 서버 대신 먼저 받아, 알맞은 내부 서버로 넘겨줍니다. 사용자는 뒤에 어떤 서버가 몇 대나 있는지 몰라도 됩니다. 요청이 '들어오는 쪽’에 있는 문지기입니다.

한 문장으로 줄이면, Forward Proxy는 나가는 요청을 대신하고 Reverse Proxy는 들어오는 요청을 대신합니다. 제가 필요한 건 후자였습니다.
문지기를 하나 세운다
제 경우엔 도메인(mossol.net)으로 들어온 손님을 블로그 Container로, 다른 주소로 들어온 손님은 그에 맞는 Container로 보내야 했습니다. Reverse Proxy가 딱 이 일을 합니다. 손님이 어떤 주소로 왔는지 보고, 알맞은 방으로 안내합니다. 손님은 포트 번호를 몰라도 되고, 주소만 알면 됩니다.
함께 챙긴 것들
문지기를 세우면서 몇 가지를 같이 정리했습니다.
- HTTPS와 인증서. 요즘은 자물쇠가 걸린 주소(HTTPS)가 기본이라, 인증서를 붙여 전부 암호화된 길로만 다니게 했습니다.
- 주소를 하나로 모으기. 앞에 www가 붙거나 자물쇠 없는 HTTP로 들어와도, 전부 대표 주소 하나로 다시 안내하도록 했습니다.
공개하지 않는 문: VPN
Reverse Proxy로 여러 서비스를 바깥에 열어 두긴 했지만, 모든 문을 열어 둘 필요는 없습니다. 오히려 서버를 직접 손보는 통로 같은 건 바깥에 드러내지 않는 편이 안전합니다.
그럴 때 쓰는 게 VPN입니다. VPN은 제 기기와 집 네트워크 사이에 암호화된 전용 통로를 하나 뚫어 줍니다. 그 통로를 타면 밖에 있어도 마치 집 안에 앉아 있는 것처럼 연결되고, 바깥에서는 그 안이 어떻게 오가는지 들여다볼 수 없습니다.
그래서 민감한 접속은 도메인으로 열어 두지 않고, VPN을 켜야만 닿도록 잠가 두었습니다. 얼마 전 집 밖에서 서버를 만질 일이 있었는데, VPN을 켜니 정말로 방에 앉아 있는 것처럼 서버에 붙었습니다.
이 통로는 보안 말고도 쓸모가 많습니다. 일본 출장 중에는 VPN으로 집에 연결해 두고 '나는 솔로’를 봤습니다. Netflix에서 한국 밖 지역에는 서비스하지 않는 콘텐츠인데, 집 네트워크를 거치니 마치 거실 소파에 앉아 보듯 이어졌습니다. 열어 둘 문과 잠가 둘 문을 나눠 두고 나니, 안심도 되고 가끔은 이렇게 편하기까지 합니다.
남는 것
이렇게 해두니 서비스를 하나 더 올릴 때가 편해졌습니다. Container를 새로 올리고, 문지기에게 “이 주소는 이 Container로” 한 줄만 알려주면 끝입니다.
집 서버의 재미는 이런 데 있습니다. 남들은 당연하게 쓰는 것을 제 손으로 하나하나 세워 보는 것입니다. 세우고 나면 그 구조가 비로소 눈에 들어옵니다.
댓글 0
아직 댓글이 없습니다. 첫 댓글을 남겨보세요.