이미 비슷한 내용이 있긴 하지만, 막히는 부분이 조금씩 있어 메모겸 공유해봅니다.
원문을 그대로 복붙하느라 경어체가 아닌 부분이 일부 있을 수 있습니다. 양해부탁드립니다.
원문을 참조하지 않으셔도 따라하시는데 큰 지장은 없습니다.
원문 : https://www.jisik96.com/archives/114
나 같은 경우 nginx-proxy-manager를 사용하는 주된 이유는 SSL적용, 포트번호 숨기기(많아지니 외우기 어렵다) 이다.
(특히 커넥터류를 도커로 돌리면서 외워야할 포트번호가 늘어났다.)
시놀로지의 역방향 프록시도 비슷한 기능을 하지만, 관리의 용이성, 이쁨, 문제발생시 해결책을 찾기 쉬워서 도커로 nginx-proxy-manager 를 사용하게 되었다.
글내용 시작
nginx-proxy-manager 는 80, 443 포트가 필요하다.
하지만 시놀로지 DSM 자체 nginx 서비스가 80, 443 포트를 사용하기 때문에 사전작업이 필요하다 (포트겹침 방지)
(이 작업 없이 npm설치가 된다면 하지 않아도 되는 작업)
https://www.jisik96.com/archives/146
위의 작업을 했다면 이제 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가 나면서 인증서 발급에 오류가 생긴다.
https://www.jisik96.com/archives/142
위 링크를 참고하자.
이제 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/;
}
추가하면 된다.