내가 실행중인 도커 컨테이너중 제일 중요하다고 생각하는 녀석이다
간단하게 서브 도메인으로 분리해서 각각 서비스에 연결해주는녀석이다
기본적으로 제어는 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 : 설정 - 기본적인설정만 있다. 잘못접근시 어떻게 처리할건지 정도?
참고자료