1) webstation을 사용하지도 않고,
2) reverse proxy도 관련 설정이 없으며,
3) dsm도 다른 포트를 사용함에도,
포트 80/443이 사용중으로 나오는 문제가 있습니다.
이는 dsm 5.x부터 nginx backend로 바뀌면서 80/443으로 접속되면 우선순위에 따라 하위 서비스로 리다이렉트를 해주는 기능이 들어가 있기 때문입니다. 저는 webstation이 없어서 dsm으로 연결해주더군요.
이게 문제라면 문제일 수 있는게 도커의 활용이 늘어나면서 써드파티 웹서버나 다른 웹서비스를 올리고 싶은데 dsm에서 점유중이라 불가능하다고 뜹니다. 아마 시도해보신분들은 아실지도...
저만 그런줄 알았는데 같은 문제인식과 고민을 하는 사람들이 적지 않네요. free 80 port dsm이라고 검색하면 글이 좀 나옵니다.
https://gist.github.com/hjbotha/f64ef2e0cd1e8ba5ec526dcd6e937dd7
http://tonylawrence.com/posts/unix/synology/freeing-port-80/
https://www.reddit.com/r/synology/comments/ahs3xh/prevent_dsm_listening_on_port_80443/
현재 /usr/syno/share/nginx/에 위치한 nginx 설정의 template인 3개의 mustache 파일을 수정하는 방법밖에 없네요.
다만 이렇게하면 포토스테이션 같은 80포트로 연결되는 서비스는 접속이 안됩니다. 또한 중요 업데이트마다 파일이 덮어써지므로 패치를 반복해서 해줘야할 수도 있습니다.
하나 단점은 도커 외부 포트를 바꿨을때 이를 내부적으로 인식시켜주는 환경변수 등 설정이 없는 경우더군요. 표시되는 URL의 포트가 달라지는 등 사소한 문제부터 아예 서비스가 안돌아가는 경우도 있더라는 -_-..
단순히 뭐 URL 생성해주는거야 귀찮지만 수동으로 바꿔주면 됩니다만, webhook 등 API endpoint를 만들고 이걸 외부 서비스에 연동을 위해 던져주고 하는 동작을 내부적으로 해버리면 아예 동작이 안되는 경우도 가끔 있습니다 ㅡ.ㅡ
뭐 이건 포트 포워딩 등의 상황에서도 동일하게 적용되는 문제라 웬만한 유명 프로그램은 외부 포트를 지정해주는 옵션(환경변수던 설정파일이던..)이 있죠. 근데 가끔 그게 없는걸 만나면 골때립니다.
웹서비스야 뭐 80:8080으로 뺀걸 다시 리버스프록시로 도메인 바꿔서 80번으로 돌려주면 해결되는데 (이거도 근데 외부 도메인 설정해주는 옵션이 없으면 안되죠;;) HTTP가 아닌 다른 프로토콜이면 답이 없습니다.
시켜도 되구요.
덕분에 저도 원하는 바가 해결되었습니다~!