easy-haproxy 꽤나 괜찮네요.
HAProxy를 사용하려는 이유가 NPM에서 NGINX가 실제 서버(백엔드)를 찾지 못하면 리버스 프록시 자체가 실행이 아예 안되는 버그? 특성?이 있습니다. 아마도 NGINX Plus에서만 Health Check가 가능하기 때문에 그런 것 같습니다. 아무튼 그런게 불편해서 OPNsense에서 사용하고 있는 HAProxy는 어떤가 싶어서 찾아봤는데 haproxy.cfg 단일 파일로만 사용할 수 있는데다 자동생성 같은것도 조금 부족한 것 같아서 프로젝트를 조금 찾아봤습니다.
https://github.com/byjg/docker-easy-haproxy
https://hub.docker.com/r/byjg/easy-haproxy
HAProxy를 설정할 때 도커 컨테이너에서 설정된 라벨을 읽어와 haproxy.cfg 파일을 자동으로 생성해서 리버스 프록시를 해주는 프로젝트 입니다. 1분마다 cron으로 컨테이너 목록을 돌려서 무중단 서비스도 되는 것 같구요. http와 tcp만 가능해서 udp 포트포워딩은 불가능한게 아쉽긴 하지만 썩 나쁘진 않은 것 같습니다. 뭐 그거야 그냥 포트포워딩으로 넘겨버리면 되는거니 큰 문제까지는 아닌 것 같기도 하구요.
CertBot도 포함되어있어서 SSL도 let's encrypt로 설정할 수도 있는 것 같은데 일단 사용하지는 않고있습니다. 사용하면 좋긴한데 CloudFlare쪽으로 발급받는게 없어서 그냥 CloudFlare에서 발급받아서 서버쪽으로 옮겨서 사용할까 싶기도 합니다. 이건 고민 좀 해봐야겠네요.
사실 NPM이나 OPNsense에서 하는 것처럼 UI로 바로 설정할 수 있는걸 찾고싶었는데 이건 있을 것 같은데 없는게 이상하긴 합니다. 제가 못찾는건지 OPNsense에 Plugin으로 있던데 그걸 Dockerize 해봐야하나 싶기도 하구요. 아님 그냥 Traefik을 사용해야할까 싶기도 합니다. 일단 여러가지 찾아보고 있는데 좋은거 있으면 소개 해드릴게요.
https://github.com/byjg/docker-easy-haproxy/tree/master/examples/docker
위 링크는 프로젝트에 포함되어있는 예시 docker-compose.yml 파일입니다.
cmt alert