시놀로지/헤놀로지에서 역방향프록시 편하게 사용하기.(Feat. Nginx Proxy Manager)
안녕하세요. 달소입니다.
오랜만에 헤놀로지에 대한 팁입니다 ㅎㅎ..
앞서 luma 님께서 역방향 프록시를 사용하시는데 애로사항이 있는듯해서 NPM을 추천드렸는데 정작 작성한 강좌글은 따로 없어서..
속성으로 빠르게 만들어보겠습니다.
NPM(Nginx Proxy Manager)이란?
Nginx를 이용한 역방향 프록시를 쉽게사용할수있도록 만들어진 오픈소스 프로젝트입니다.
https://github.com/NginxProxyManager/nginx-proxy-manager
역방향 프록시의 여러가지기능을 지원하는데요.
기본적인 기능은 아래와같습니다. 시놀로지의 역방향 프록시와의 비교점을 말씀드리자면
각 호스트에 대한 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로 리다이렉트 되며 인증서 적용도 잘된것을 확인할 수 있습니다.
급하게 쓰느라 부족한 부분이 많습니다..
댓글로 추가할 내용이나 궁금한 내용있으면 적어주세요~
npm에서 65000포트로 또 서비스하고계신게 있는걸까요?
포트포워딩을 65000을 안해줬는데 접근이 되는것도이상하네요
65000으로 따로 세팅해준것은 없습니다..
공유기에서 원격포트를 65000으로 세팅해서 접근되는거 같습니다
저는..초보자라... NPM이 제일 편합니다..핳...
그러네요. NPM 저도 사용하면서 컨테이너 올리는 것도 쉽고 적용하는것도 따로 찾아보지 않아도 될정도로 쉬워서 따로 게시글 적을 생각을 못했네요. ㄷㄷ
사용방법이 쉬운데 의외로 시놀로지의 역방향프록시만 많이사용하시는듯합니다 ㅎㅎ
NPM짱...!
저는 시놀 ddns 인증서 npm에서 적용했는데 잘되더라구요
/data와 /letssencrypt 폴더만 백업해놓으면 어느서버에 가든지 동일한 설정 과 인증서로 백업/복구 가능합니다.
DNS 챌린지에 duckdns도 있으니 문제없을듯하네요
internal error 이라고 나오면서 뭔 짓을 해도 안되네요ㅠㅠ asus 공유기가 문제이려나요...
asus 공유기로 포트포워딩은 문제없습니다.
어느 통신구간에서 에러가 나오는지 확인해보셔야할듯하네요
덕분에 헤놀 7.1을 올릴 수 있었습니다~ 감사합니다. 저는 헤놀 역방향 https도 적용 안되고 npm은 계속 인터널 에러가 나기만 해서(계속 다시 설치하고 jisage? 버전도 마찬가지였습니다) 뭘 못하고 있어요 ㅠㅠ 에러 로그는 도커에 올린 npm로그를 따오면 될까요 ? 도무지 역방향에 대해 감이 안오네요... dsm에 duckdns 역방향붙인건 잘 되는데...다른건 전혀 안되서 왜부접속에 어려움이 있습니다ㅠㅠ현재 duckdns 쓰고 있어요...구조는 유플러스 벽 랜포트-asus 메시와이파이-헤놀 입니다
포트포워딩이 잘되시는지부터 확인하셔야될듯합니다.
npm의 일반 페이지가 잘뜨신다면 그다음부터는 reverse proxy 설정을 보셔야합니다
포트포워딩부터 다시 해봤더니 잘됩니다~ 달소님덕분에 해결했어요~ 이젠 자동갱신으로...
되셨다니 다행입니다~
안녕하세요~
저도 internal error로 인해서 인증서를 못받는 와중에 이 글을 발견하게 되었습니다.
XXX.XXX.synology.me 으로 연결해보고 있는데 포트설정을 몇번 해봐도 잘 안되네요.
혹시 어떻게 해결하셨는지 공유해주실 수 있으신지요?
안녕하세요~ 전 asus 공유기인데요. 포트포워딩 외부포트80-내부포트npm 포트(http)/외부포트443-npm 포트(https) 로 작성후 해결되었습니다~
100mbps 인터넷 상품, 1Gbps 내부망으로 서버를 구축해 운영하고 있습니다.
본 글을 참고해 npm을 구축한 후 cloudflare 도메인을 연결해 접속하니 내부에서도 100mbps 속도로 접속이 됩니다.
내부 ip를 통한 접속은 정상적인 1Gbps 속도가 나오구요,,
혹시 알고계신 원인이나 그 해결 방법이 있을까요?
공유기 루프백 관련 문제인지 도통 모르겠습니다.ㅠㅠ
음.. 문제가 아니라 당연한 속도를 정상적으로 뽑아주고있는겁니다.
100mbps 인터넷 상품을 쓰시는데 외부 도메인을 통해 공인 ip로 접속하셨으면 외부 인터넷을 타니 당연히 100mbps로 타는것이 맞구요.
내부 ip로 접속했을때는 외부통신을 타지않기때문에 내부망 속도를 그대로 타는게 맞습니다.
같은 1gbps를 쓰고싶으시다면,, 인터넷을 기가인터넷으로 바꾸셔야할것같네요
cmt alert