지난번에 트랜스미션을 설치하며, 웹 브라우저로 접속하는 서비스가 2개가 되었습니다. (OMV 웹 설정 패널, 트랜스미션 RPC)

이 서비스들을 사용하기 위해서 포트 번호를 외우고 다니는 것도 나쁘진 않지만, 뭔가 전문적인 느낌을 위해 Nginx역방향 프록시를 사용하여 서브도메인으로 서비스를 관리해 봅시다.


역방향 프록시란

역방향 프록시HTTP 서비스에서 실제 서버 자원의 통신을 대리하는 서버입니다. 왜 역방향Reverse이라는 이름이 붙었냐면, 원래 프록시 서버Proxy Server는 클라이언트의 네트워크에 붙어 클라이언트를 대리하는 서버를 말하거든요. 그런데 얘는 서버를 대리하여 반대 방향으로 프록시 역할을 수행하니, 역방향 프록시인 겁니다.

물론 고작 나스를 운영하는 입장에서는 그런 원론적인 개념을 이해할 필요는 없고, 우리는 이 기능을 사용하여

  • 서브도메인을 사용하여 서비스에 접속하고,
  • HTTPS 적용을 쉽게 할 수 있습니다. (이건 다음 글에서 다룰 거예요)

정도가 가능해진다고만 알면 될 것 같네요.

사전 작업

앞의 글들을 읽었다면 이해하기 어렵지는 않습니다. 또는 이미 설정되어 있을 수도 있어요.

DNS 서비스 설정

일단, 서브도메인이 지원되는 도메인이 필요합니다. 도메인을 구매하였다면 모든 서브도메인을 나스로 연결되도록 네임 서버를 설정해주고, 아니면 DDNS를 사용합니다. 테스트해 보니, iptime.org은 안 되고 duckdns.org가 서브도메인을 지원하네요.

공유기 포트포워딩 설정

HTTP 포트포워딩 설정

지금까지 홈 네트워크 바깥에서는 FTP만 사용하게 했었는데, 역방향 프록시를 위해서는 HTTP도 외부에 공개되어야 합니다. 80 포트를 통한 접속이 나스에 중계되도록 공유기에 설정합시다.

OMV 패널 접속 포트 변경

Nginx가 나스의 기본 HTTP 포트인 80 포트를 사용할 건데요, 그럼 OMV 패널과 포트가 겹쳐요. 그래서 시스템 > 일반 설정에서 포트를 적당한 것으로 바꿔줘야 합니다.

OMV 패널 접속 포트 변경

저는 포트 번호를 8080으로 바꿨어요.

Nginx 설치

Nginx는 유명한 웹 서버 패키지로 워드프레스 등 다른 웹서비스를 위해 사용됩니다. 그렇지만 우리는 이걸 단순히 역방향 프록시용으로만 활용할 거예요. 물론, 나중에 서버를 추가하여 웹서비스용으로도 사용할 수 있습니다.

시스템 > 플러그인 메뉴로 들어가 엔진엑스를 설치합니다.

Nginx 설치

설치가 완료되면 서비스 메뉴에 Nginx (websites) 메뉴가 생성되어 있습니다. 활성화해줍니다.

Nginx 활성화

이때, 서버 이름 해시 버킷 크기를 최대치로 올려주는 것이 좋다고 합니다. 이 크기가 작으면 URL이 길어지면 오류가 날 수 있대요. 오류를 경험해 본 적은 없지만, 우리의 나스가 이걸 작게 유지해야 할 정도로 성능이 낮은 것은 아니니 높게 잡아줍시다.

Nginx 서버 추가하기

이제 서버 탭에 들어가서 서비스를 추가합니다. 2개의 프록시 서버를 추가할 건데요.

  • cpanel.banyazavi.duckdns.org (OMV 제어 패널)
  • torrent.banyazavi.duckdns.org (트랜스미션 RPC)

Nginx 프록시 서버 추가

마지막의 추가 옵션이 매우 중요합니다. 사실, 이 내용이 이번 글의 핵심인데요. 8080 포트로 설정한 OMV 제어 패널로 예를 들면,

location / {
  proxy_pass http://localhost:8080;
}

이 구문의 의미는 서버 이름으로 접속하여 하위 주소가 /일 경우, Nginx의 입장에서 http://localhost:8080으로 접속한 내용을 서비스한다는 의미입니다.

나중에 다른 서비스를 설치하였다면, 8080 대신 해당 서비스의 포트 번호를 입력하면 됩니다. 나스 내부에 설치된 서비스가 아니라면 localhost 부분도 다른 IP나 주소로 바꾸어 주세요.

설정이 완료되었다면 등록한 주소로 접속하여 서비스가 제대로 뜨는지 확인해 봅시다.


그리고 남은 이야기

서브도메인을 지원하지 않는 iptime.org와 같은 DDNS의 경우, 하위 경로를 구분하여 서비스를 쪼개 주는 방법이 가능은 한데요, 추가 옵션이 매우 복잡해집니다. 예전에 간신히 적용에 성공해 본 적이 있긴 한데, 마냥 원활하게 굴러간 것도 아니었으므로 알려드리긴 어렵고, 사실 까먹음 웬만하면 서브도메인을 통해 사용하는 것이 편해요.

그리고 Nginx도 OMV5에서 플러그인이 삭제됐습니다. 대신 도커에 역방향 프록시를 지원하는 좋은 이미지들이 많으므로 이쪽을 쓰는 것이 좋겠네요.

댓글남기기