Nginx Proxy manager

danhyeon·2024년 9월 15일

Deploy

목록 보기
4/6

서버 운영을 위해 Jenkins, Nginx, WAS 등 다양한 포트에 바인딩되어 구동되는 도커 컨테이너들이 있는데, 이들을 특정 도메인 이름으로 접속할 수 있도록 하기 위해 proxy를 가장 앞에 두고 포워딩하는 것이 필요하다. 이런 Proxy는 nginx를 주로 사용하는데, nginx를 기반으로 UI를 제공하여 포트 포워딩 및 각 도메인별 SSL을 손쉽게 설정할 수 있도록 도와주는 것이 NPM(Nginx Proxy Manager)이다.

NPM은 로그인 등의 처리를 위해 DB를 필요로 하며 이는 Nginx만을 위해 사용할 것이므로 외부에 포트바인딩 없이 docker compose로 NPM과 묶어주겠다.

docker-compose.yml

services:
  db:
    image: 'jc21/mariadb-aria:latest'
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: '1234'
      MYSQL_DATABASE: 'nginx'
      MYSQL_USER: 'root'
      MYSQL_PASSWORD: '1234'
    volumes:
      - ./mysql:/var/lib/mysql
  app:
    depends_on:
      - db
    image: 'jc21/nginx-proxy-manager:latest'
    restart: always
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    environment:
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "root"
      DB_MYSQL_PASSWORD: "1234"
      DB_MYSQL_NAME: "nginx"
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
  • 해당 위치에서 sudo docker compose up -d 로 실행

+) 적용 예시

[그외]
dnszi.com -- 도메인 관리 서비스, A레코드 등록, ddns 설정 등
참고할점 - 방화벽 포트 개방 (중요)

profile
문제를 반복하지 않기

0개의 댓글