nginx-proxy-manager 도커 Docker 설치 및 사용

나 같은 경우 nginx-proxy-manager를 사용하는 주된 이유는 SSL적용, 포트번호 숨기기(많아지니 외우기 어렵다) 이다.

 

시놀로지의 역방향 프록시도 비슷한 기능을 하지만, 관리의 용이성, 이쁨, 문제발생시 해결책을 찾기 쉬워서 도커로 nginx-proxy-manager 를 사용하게 되었다.

 

 

nginx-proxy-manager 는 80, 443 포트가 필요하다.

하지만 시놀로지 DSM 자체 nginx 서비스가 80, 443 포트를 사용하기 때문에 사전작업이 필요하다 (포트겹침 방지) 

시놀로지 DSM 80 443 포트 겹침 해결방법

위의 작업을 했다면 이제 80, 443 포트는 비었다. 

 

도커 내의 레지스트리 탭에서
jlesage/nginx-proxy-manager 미리 다운

 

config 폴더는 미리 적절한 위치에 생성한 후 경로를 개인의 환경에 맞게 수정한다.

docker create \
  --name=nginx-proxy-manager \
  -p 8181:8181 \
  -p 8080:8080 \
  -p 4443:4443 \
  -v /volume1/docker/nginx-proxy-manager/config:/config \
  --restart=always \
  jlesage/nginx-proxy-manager

공유기포트포워딩은

외부 80 내부 8080
외부 443 내부 4443
외부 8181 내부 8181

위 명령어는 컨테이너를 생성하는 것이기 때문에, DSM 도커 앱 내에서 따로 실행시켜야한다.

초기 이메일과 패스워드는 admin@example.com / changeme  이다. (알아서 바꾸자)

 

nginx-proxy-manager 접속 주소는 http://nas ip(또는 ddns):8181/  이다. 

 

참고로 SSH(putty, wetty)가 아닌 시놀로지 GUI 환경에서 설정할 때는 네트워크는 host가 아니라 bridge로 설정해야한다.

 

설치 후에 리버스 프록시를 설정할 때 (구글도메인에서 abc123.com 을 구매하였다고 가정)

www.abc123.com 을 ssl 설정하여 사용하려면

미리 도메인 dns 설정 사이트에서 www.abc123.com을 cname에 추가해야한다.

미리 하지 않으면 internal error가 나면서 인증서 발급에 오류가 생긴다. 

구글 도메인 Google Domain 구매 및 사용법, DDNS로 사용하는 방법

위 링크를 참고하자.

 

이제 nginx-proxy-manager를 사용해보자

http://abc123.com:1234/ 를 www.abc123.com 으로 대체하고 싶은 경우

 

왼쪽 상단 Hosts 클릭후 proxy hosts 클릭

우측 상단 add prxoy host 클릭

Domain names 에 www.abc123.com 입력

scheme : http 그대로 유지

forward hostname : abc123.com

foward port :  1234

아래 3개 모두 체크

SSL 탭에서 Reguest a new SSL certificate 클릭

4개 모두 체크, 이메일 넣기, 아래도 체크 후 save

연결된 게시글을 모두 따라왔다면 정상적으로 인증서가 발급되었을 것이다.

이제 www.abc123.com 으로 접속해서 확인해보자

 

 

특정상황에서 http://abc123.com:1234/guacamole 처럼 주소 뒤에 /xxx를 붙여야 접속되는 구조인 경우 해결방안


Custom Location 에

location = / {
return 301 $scheme://$server_name/guacamole/;
}

추가

4 thoughts on “nginx-proxy-manager 도커 Docker 설치 및 사용”

  1. 안녕하세요. 클리앙에서 보고 와서 따라하고있는데 잘 안되어 질문드립니다. 헤놀로지 사용중이구요. 위에 포트 변경하는 작업하였고, 도커에 컨테이너 생성까지 다 했는데요.

    config 폴더는 미리 적절한 위치에 생성한 후 경로를 개인의 환경에 맞게 수정한다.

    docker create \
    –name=nginx-proxy-manager \
    -p 8181:8181 \
    -p 8080:8080 \
    -p 4443:4443 \
    -v /volume1/docker/nginx-proxy-manager/config:/config \
    –restart=always \
    jlesage/nginx-proxy-manager

    이 부분을 어디에 적어야하는지 잘 모르겠어서요. 도커에 터미널쪽에 적으면 되는거 같은데 붙혀넣기도 안되고,해서 질문드립니다.

    해당사항을 적지 않으니 8181로 접속 자체가 안되네요.

    공유기 포트포워딩은 다 해주었습니다.

    초보라서 도커 사용에 어려움이 많네요. 답변주시면 감사드리겠습니다. (_ _

    응답
    • 지금 nginx-proxy-manager 컨테이너가 실행중이신건가요?
      해당코드는 도커의 터미널이 아닌 putty 또는 wetty로 ssh 로 접근하셔서 붙여넣어야하는 코드입니다.
      nginx-proxy-manager설치 및 ssl발급, 구글도메인의 DNS(cname)이 모두 되어야 접속이 가능할 것 같습니다. 근데 포트번호로도 정상적으로는 접속이 되어야 하는데 안된다니 좀 이상하긴 하네요.
      다른 브라우저로 시도해보시거나, 캐시와 쿠키 삭제 후 재 접속 해보시길 권유드립니다

      응답
  2. 안녕하세요. 답변 고맙습니다. 컨테이너는 실행중이었고, 브라우저를 바꿔봐도 쿠키를 지워도 접속이 거부되네요…
    좀 더 공부하고 해보려고 일단 컨테이너 삭제를 했습니다. 근데 예전엔 도메인.net 접속을 하면 저절로 5001 포트가 주소 뒤에 붙으면서 접속이 되었는데 지금은 접속이 거부되고, 도메인.net:5001 이렇게 뒤에 포트번호를 붙혀줘야 접속이 되네요.

    아마 dsm 포트 변경을 해서 그런것 같은데 다시 원래대로 포트를 변경하려면 어찌 해야할까요? 외부포트 바꾸는 항목을 아무리 찾아봐도 못찾겠네요…ㅠㅠ

    바쁘신데 답변 주셔서 정말 감사합니다~~

    ps.답변하기로 답글을 다니 댓글이 이상하게 안달리네요. 다시 댓글로 작성합니다.

    응답
    • 포트를 원래대로 변경하시려면 change-ports.sh 스크립트를 지우시고 재부팅하시면 될 것 같습니다.
      변경이 안된다면 스크립트 내용을

      HTTP_PORT=80
      HTTP_PATCH_PORT=80
      HTTPS_PORT=443
      HTTPS_PATCH_PORT=443

      으로 변경해보시기 바랍니다.

      응답

댓글 남기기