시놀로지/헤놀로지에서 역방향프록시 편하게 사용하기.(Feat. Nginx Proxy Manager)

안녕하세요. 달소입니다.

오랜만에 헤놀로지에 대한 팁입니다 ㅎㅎ..

앞서

luma 님께서 역방향 프록시를 사용하시는데 애로사항이 있는듯해서 NPM을 추천드렸는데 정작 작성한 강좌글은 따로 없어서..

속성으로 빠르게 만들어보겠습니다.

NPM(Nginx Proxy Manager)이란?

Nginx를 이용한 역방향 프록시를 쉽게사용할수있도록 만들어진 오픈소스 프로젝트입니다.
https://github.com/NginxProxyManager/nginx-proxy-manager

GitHub - NginxProxyManager/nginx-proxy-manager: Docker container for managing Nginx proxy hosts with a simple, powerful interfaceDocker container for managing Nginx proxy hosts with a simple, powerful interface - GitHub - NginxPro...

GitHub

역방향 프록시의 여러가지기능을 지원하는데요.

기본적인 기능은 아래와같습니다. 시놀로지의 역방향 프록시와의 비교점을 말씀드리자면

각 호스트에 대한 SSL인증서 적용의 편의성, nginx 커스텀 설정, http/2 지원 등등 여러모로 시놀로지의 역방향 프록시보다는 편의성이나 성능면이 좋습니다.

기능

  • Tabler 기반의 아름답고 안전한 Admin Interface
  • Nginx에 대해 전혀 몰라도 포워딩 도메인, 리디렉션, 스트림 및 404 호스트를 쉽게 생성
  • Let's Encrypt를 사용하는 무료 SSL 또는 사용자 정의 SSL 인증서 제공
  • 호스트에 대한 액세스 목록 및 기본 HTTP 인증
  • 슈퍼 사용자가 사용할 수 있는 고급 Nginx 구성
  • 사용자 관리, 권한 및 감사 로그

시놀로지/헤놀로지에서 NPM설치하기

NPM의 설치는 도커로 간단하게 설치가 가능합니다.

docker-compose로 하면.. 가장 편하긴한데 익숙하지않은분들이 계시니 GUI로 설치하는방법으로 진행하겠습니다.

생성전에 데이터를 보관할 디렉터리와, 인증서 보관을 위한 디렉터리를 생성하겠습니다.

docker의 NPM 폴더 및에 data와 letsencrypt 폴더를 만들어줬습니다.

이미지 다운로드받기.

docker 패키지를 실행시킨 뒤 이미지 -> 추가 -> URL에서 추가
https://hub.docker.com/r/jc21/nginx-proxy-manager

입력

태그는 latest로 받아주 면됩니다.

컨테이너 생성하기

기본적으로 시놀로지에서 역방향 프록시를 위한 80/443 포트를 사용하고있기때문에 조금 다른 포트를 매핑해주겠습니다.

이건 사용자의 마음이기 때문에 편하신포트를 지정해주세요.

80/443 : 웹 서비스포트

81 : 관리포트 입니다.

이미지를 누르고 실행.

이제 위에서 말슴드린 포트설정을 진행해주시면됩니다.

그리고 폴더추가의 경우 아까 사전에 생성한 디렉터리들을 볼륨매핑해주시면됩니다.

이렇게 설정값이 확인되면 완료를 눌러 컨테이너를 생성합니다.

사용하기

컨테이너가 생성되면 웹으로 NAS ip :81번으로 접속해주세요.

기본 계정정보는 아래와 같습니다.

Email:    admin@example.com
Password: changeme

접속하게되면 이메일주소와 pw를 바꾸라고하는데 바꾸시면됩니다.

사용은 그렇게 어렵지않습니다.

메인 Dashboard로 들어가서 Proxy Hosts 로가서 호스트를 추가해주시면됩니다.

DSM기본페이지를 프록시하는 예제 하나만 작성해보겠습니다.

먼저 dsmtest.dalso.org라는 도메인을 만들뒤에 ip를 할당해줬습니다.

그리고 포트포워딩을 방금 셋팅한 NPM으로 지정해주세요.

80으로오면 nas의 8080

443으로오면 nas의 8443 입니다.

이제 테스트도메인으로 접속해보면 아래와같은 페이지가 나오는데 이게 기본페이지입니다.

이제 본격적으로 프록시를 만들어보겠습니다.

New Proxy Host

도메인이름은 테스트도메인 그리고 아래 Scheme와 프록시 호스트네임등이 중요한데 여기서는 http로 넘겨줘도 NPM에서 ssl을 추가적용할것이기때문에 문제없습니다.

이렇게만 하고 저장을하게되면 아래처럼 Online이 되고

접근했을때 아래처럼 http로 적용되는데요

다시 edit으로 가서 SSL 탭을 아래항목처럼 셋팅한뒤 OK를 누르면

Let's Encrypt의 인증서도 자동 발급이 됩니다.

기타 DNS들의 DNS를 적용해서 와일드카드인증서를 발급도있는데 아래글을 참고해주세요.

https://it-svr.com/npm-nginx-proxy-manager-wildcard-certificate-cloudflare/

변경후에 아래처럼 잘 나오면 끝났습니다.

자동으로 http -> https로 리다이렉트 되며 인증서 적용도 잘된것을 확인할 수 있습니다.

급하게 쓰느라 부족한 부분이 많습니다..

댓글로 추가할 내용이나 궁금한 내용있으면 적어주세요~