Nginx Reverse Proxy를 쉽게 사용하기 위한 Proxy-manager 구축하기.(NPM)
추가추가
https://svrforum.com/svr/284432
안녕하세요. 달소입니다.
오늘도 새로운 정보를 하나 주워왔습니다 ㅋㅋ..
오늘 라우터가 도착하기로해서 리버스프록시 셋팅을 바꾸려고 이것저것 찾아보는데
Proxy-Manager 라는 Docker Image가 존재하더군요.
https://nginxproxymanager.com/
nginx의 리버스프록시와 Let's Encrypt 인증서를 쉽게 발급받을 수 있도록 도와주는 이미지입니다.
사전준비
설치 OS는 Ubuntu 20 LTS
docker,docker-compose 설치
없으면 apt install docker.io docker-compose
docker-compose로 컨테이너 생성하기.
먼저 데이터를 저장할 디렉터리를 먼저 생성해주세요.
mkdir -p /data/proxy-manager
cd /data/proxy-manager
vi docker-compose.yml
80,443은 웹서비스를 위한 포트 81번은 관리를 위한 웹페이지입니다.
version: '3' services: app: image: 'jc21/nginx-proxy-manager:latest' ports: - '80:80' - '81:81' - '443:443' environment: DB_MYSQL_HOST: "db" DB_MYSQL_PORT: 3306 DB_MYSQL_USER: "npm" DB_MYSQL_PASSWORD: "npm" DB_MYSQL_NAME: "npm" volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt db: image: 'jc21/mariadb-aria:latest' environment: MYSQL_ROOT_PASSWORD: 'npm' MYSQL_DATABASE: 'npm' MYSQL_USER: 'npm' MYSQL_PASSWORD: 'npm' volumes: - ./data/mysql:/var/lib/mysql
이제 docker-compose up -d 명령어로 컨테이너를 만들겠습니다.
설치후 docker ps 명령어로 컨테이너를 확인할 수 있고 ip:81번으로 접속해주세요.
계정정보는 아래 정보로 입력해주면됩니다.
Email: admin@example.com
Password: changeme
로그인하면 계정명 pw 다변경해야합니다.
로그인 하고나오면 이제 대시보드, 호스트, 액세스리스트, 인증서 등 확인이 가능합니다.
npm의 80번 포트로 접근하면 아래처럼 Congration이 나옵니다
인증서 발급부터 프록시 실습은 다음글에서 작성하도록 하겠습니다.
docker ps 로 컨테이너 id 확인하여, docker logs <컨테이너_id> 로 로그 조회했을 때,
MySQL이 정상적으로 구동되지 않는 경우에 오류가 뜨는 것으로 보입니다.
저 같은 경우,
- ./data/mysql:/var/lib/mysql 를
- ./mysql:/var/lib/mysql 로 수정하여 해당 문제 해결하였습니다.
down을 하면 자동으로 삭제도 됩니다.
볼륨매칭되어있는 폴더들만 추가로 삭제 후 다시만들어주시면되요
포트만 변경하시는거라면 down 후 설정파일바꾸고 up -d만 해줘도 설정값 변경됩니다.
헐...
나름 스스로 해보려고 했는데 이런 쉬운 방법이
저는 Portainer 설치를 해서 그곳에서 컨테이너 삭제를 했네요.
감사합니다.
성공을 하였습니다.
공유기 포트포워딩을 우분투 ip 에 대한 80과 443 포트를 열어주니 되네요.
감사합니다.
이제 어느정도 해결은 되었네요.
혹시 자동으로 갱신은 없나요
자동갱신은 CLI환경에서는 가능한데 프록시매니저는 찾아보셔야할듯합니다.
헤놀 아이피가 XXX.XXX.XXX.57
우분투아이피 XXX.XXX.XXX.58
라고 과정을 하고요.
공유기에서 내부아이피를 헤놀로 입력해서 포트포워딩 80,443 두개를 열었습니다.
헤놀에서는 잘 되는데 우분투에서는 동일하게 했는데 안됩니다.
뭐가 문제일까요?
Internal Error 나옵니다.
우분투에서 어떤걸하시는건가요?
아...
해결을 했습니다.
npm 입니다.
해결되셨다니 다행입니다ㅎ
ㅎ 감사합니다.
Error starting userland proxy: listen tcp4 0.0.0.0:443: bind: address already in use
443포트가 사용중이라 생성이 안되는데요.. 443포트 사용중인게 없거든요.. 먼가 해줘야 하는데 검색이 잘안되네요.
시놀로지의 경우 443 포트를 dsm에서 점유하고있기때문에 타 포트를 적어주시고 포트포워딩을 해당포트로해주시면됩니다.
ex) 8080:80, 8443:443으로 매핑하고 포트포워딩시 공유기의 80을 8080으로 443은 8443으로요
사야한다면 무료도메인좀 알려주세요ㅠㅠ
지금은 내도메인.한국 에서 공유기IP 연결시켜놨습니다
개인적으로는 클라우드 플레어 추천드립니다.
무료도메인은.. 뭐 딱히 추천드리지는 않지만 ducksdns 사용가능합니다
앱에서 사이트로 인식 안하고 큌커넥트 아이디로 인식하나봅니다!!ㅎㅎ
docker ps 로 컨테이너 id 확인하여, docker logs <컨테이너_id> 로 로그 조회했을 때,
MySQL이 정상적으로 구동되지 않는 경우에 오류가 뜨는 것으로 보입니다.
저 같은 경우,
- ./data/mysql:/var/lib/mysql 를
- ./mysql:/var/lib/mysql 로 수정하여 해당 문제 해결하였습니다.
감사합니다.
cmt alert