클라우드 엔지니어/Docker

Docker 가지고놀기 - NPM(nginx-proxy-manager)

해아's 2023. 1. 29. 09:00

내가 실행중인 도커 컨테이너중 제일 중요하다고 생각하는 녀석이다

간단하게 서브 도메인으로 분리해서 각각 서비스에 연결해주는녀석이다

기본적으로 제어는 81번포트로하며

http와 https를 제어하기때문에 80,443포트를 사용한다.

version: "3"
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      # These ports are in format <host-port>:<container-port>
      - '80:80' # Public HTTP Port
      - '443:443' # Public HTTPS Port
      - '81:81' # Admin Web Port
      # Add any other Stream port you want to expose
      # - '21:21' # FTP
    environment:
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm"
      DB_MYSQL_NAME: "npm"
      # Uncomment this if IPv6 is not enabled on your host
      # DISABLE_IPV6: 'true'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    depends_on:
      - db

  db:
    image: 'jc21/mariadb-aria:latest'
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 'npm'
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: 'npm'
    volumes:
      - ./data/mysql:/var/lib/mysql

docker-compose up -d

으로 올릴수 있으며

db를 따로 만들어도 되고 기존db를 써도되고 선언을 안하면 sqllite로 만들어진다.

물론 나는 귀차나서 다 안쓰고 이렇게만 선언했다.

version: "3"
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '10080:80' # Public HTTP Port
      - '10443:443' # Public HTTPS Port
      - '10081:81' # Admin Web Port
    volumes:
      - /volume1/data:/data
      - /volume1/letsencrypt:/etc/letsencrypt
      - /volume1/SSD_DATA/nginx_status.conf:/etc/nginx/conf.d/nginx_status.conf

나는 10080 10443 10081을 공유기에서 nas로 포트포워딩으로 넘겨주기때문에 이렇게 선언하였는데 각자 본인에 맞게 선언을 바꾸면 좋다.

 

실행후 접속하면 아래와 같은 로그인창이 뜬다

로그인후 아이디와 비번은 꼭 바꿔주자

Default Admin User:

Email:    admin@example.com
Password: changeme

 

제일 중요한 사용법은 아래와 같다

1. Hosts : 들어오는거 제어

  - 4가지가 있는데 어짜피 쓰는건 프록시 호스트이다.

  - 설정은 간단하게 접속을 유도할 서브도메인을 어디로 보낼지정도 생각하면된다.

  예)로들어 aa.tistory.com  접속시 ->  내가 도커 컨테이너로 만들어둔 사이트 포트 20080에 연결할경우.

  (도커컨테이너아이피는 192.168.0.111이라 가정한다)

Proxy Host >  Add Proxy Host

 이렇게하면 끝이다. 나머지는 설정하기 나름이라 이정도로 끝내겟다.

 

2. Access List: 접속제어

3. SSL Certficates : SSL 설정

 - SSL설정은 여기서 자동으로 SSL를 등록해도되고 나처럼 다른데서 등록한 SSL를 연동해도된다.

4. Users : 계정설정

5. Audit Log: 로그

6. Settings : 설정 - 기본적인설정만 있다. 잘못접근시 어떻게 처리할건지 정도?

 

 

 

 

참고자료

728x90
반응형