Nginx Proxy Manager를 이용해서 호스트 등록 및 SSL 인증서 발급받기.(NPM)
안녕하세요. 달소입니다.
오늘은 예~~전에 쓰다말았던 Nginx Proxy Manager , NPM을 사용하는 방법입니다.
앞선단계에서 구축까지했다면 이제 실 사용이라고 보시면되겠습니다.
진행환경
80/443 이 포트포워딩 된 NPM 서버
리버스 프록시를 당할 nginx 테스트서버
host 등록하기
사용을 위해서 NPM 관리페이지로 접근해주세요.
여기서는 필수정보만 입력해보겠습니다.
외부에서 접근하도록 사용할 도메인 이름(DNS 등록 필요)
저는 기본 nginx 페이지를 proxy 할것이므로 ip : 80 입니다.
옵션을 좀더 보면
Custom locations 쪽은 시작점을 의미합니다.
ex) 192.168.1.60/nextcloud 와 같은 시작점이라면 뒤에 /path쪽에 nextcloud를 적으면 되겠지요
이제 가장 중요한 ssl 설정입니다.
인증서를 발급받을것이기때문에 Request a new SSL Certificat를 해주시고
아래 옵션들은 ssl을 강조할것인지 등의 설정입니다.
하단의 Use DNS Challange의 경우 와일드카드 인증서를 받을때 많이 사용되는데 google domains, cloud flare등 많은 도메인업체들의 API를 통해서 가능하기떄문에 추후에 하나 글을 따로 작성해보겠습니다.
여기서는 기본인증으로합니다.
Advanced에서는 커스텀 옵션들이 들어갑니다.
ex) 업/다운로드 제한이라던지.. 봇 방지 정책이라던지,, hot link라던지요.
이제 완료 후 Save를 눌러주면 끝입니다.
완전 쉽죠...?
이제 https://npm.dalso.org 로 가보면 아래처럼 인증서가 달린 기본 nginx 페이지를 볼수있습니다.
쓰다보니 nginx의 최신기술인 stream도 지원하네요.ㅎㅎ 훌륭합니다.
역시 편의성은..
최초 NPM을 설치하고 신규 프록시 호스트 등록할때 custom locations 탭에 있는 항목은 어떻게 넣어줘야 하나요?
별도로 도메인뒤에 /path를 사용하실때만 추가하시면 되고
일반적인환경이라면 굳이 안넣으셔도 문제없습니다
매번 질문만 드리는거 같아 죄송합니다. 다른게 아니라 위에 내용 처럼 진행하였는데 아래 캡쳐화면처럼 인터널 에러가 나고 등록이 된거 처럼 보이는데 ssl이 http 온리로만 나오고 제대로 활성화가 안된거 같습니다. 혹시 이게 IPTIME DDNS라서 그런건지 왜 안되는지 모르겠습니다. ㅠ 혹시 다음 사이트에 보면 2020년 7월 이후에 iptime 주소는 ssl인증이 불가하다라는 내용이 있는데 이거 와 관련이 있는걸까요?
https://hi098123.tistory.com/262
흠.. 별도의 로그는 생성되지않으실까요?
iptime ddns로는 제가 테스트를해본적이없어서 다른분들 경험담을 봐야할듯합니다
추가로 아래 internel error의 경우 내부 통신은 잘되시는 상태이실까요?
네, 내부 아이피 끼리는 NPM 접속이 잘 되고 있습니다.
네트워크 구조는 어떻게되실까요??
ssl쪽옵션도 한번봐야할듯합니다
혹시나 몰라 새로 구입한 도메인으로 하니까 문제 없이 잘 되네요! 감사합니다^^
다행이네요 ㅠㅠ 도움이 전혀 못됐는걸요...
덕분에 새로운 정보를 또 얻어갑니다 ㅎㅎ
아닙니다. 이 서버포럼 존재 자체가 저에게는 큰 도움이 됩니다.ㅋ
한가지 더 여쭤볼게 있는데요
제가 vsphere7 버전을 사용하고 있고 그 안에 NPM 서버를 사용하고 있습니다. vdi.xxxxx.com으로 esxi 관리 화면 접속하려면 포트를 어떻게 설정해야 할까요? 192.168.1.84 port는 443으로 설정했더니 502 에러가 나네요 ㅠ
개인적으로 ESXi의 외부접속은 보안상 매우좋지않다고생각합니다.
해외포럼에서도 esxi reverse proxy 를 검색하면 결과가 나오기는하는데요.
간단히 80/443만 사용하는게아니라 별도의 포트를 또 사용하고있어서 해당포트도 포트포워딩해줘야하는걸로 알고있습니다. 도메인 인증서도 넣을려면 복잡하구요.
저도 방법까지는 정확히 기억이나지않아 가이드를 드리기는 어렵고
검색 키워드만 드립니다. esxi reserver proxy, esxi port fowarding 등
잠깐 봤는대 간단하지는 않네요.ㅠ 아이피타임 포트 포워딩으로 포트 명시해서 접속하는 방식으로 해봐야 겠습니다. 별도 도메인 붙이는건 나중에 시간날때 하는걸로...ㅋ
덕분에 쉽게 잘 적용했습니다!
그런데 NPM에 연동한 리버스 프록시 서비스 접속시 해당 서비스에서 NPM IP로 로그를 찍는건 어떻게 해결해야 할까요?
nginx 쪽에서 real_ip쪽을 넣어주시면되는데요.
https://blog.dalso.org/home-server/2239 참고해주시면됩니다!
오 감사드립니다. 반은 해결한거 같습니다.
적용하니 외부에서 접속시 외부IP가 찍히는데 내부에서 접속하는건 모두 프록시IP로 찍네요. ㅠㅠ
내부에서 접근하는건 Realip를 대역으로하셔서 그럴듯합니다. 프록시 서버 ip를 32비트로 잡아주시면될듯하네요
답변 감사합니다!
어제는 단독으로도 해보고 /32비트로 해도 안됐어서 하다가 중단하고 잤는데 오늘은 다 IP찍히는게 잘되네요.. 집 환경이 문제였던건지 ㅠㅠ
ㅎㅎ 다행입니닷
ssl 인증 가져오는 부분에서 internal error나서 해매었는데
사용할 80 포트를 미리 공유기에서 열어 놓아야 하는군요..
네 기본적으로 80/443의 요청을 모두 받아야하기때문에 기존에 인증서를 받으셨던것처럼 포트도 미리열려있어야합니다
cmt alert