인증서 정보를 가져올 수 없습니다.
SSL 인증서 현황
Let's Encrypt 인증서 유효기간
총 0개
인증서 정보를 가져올 수 없습니다.
Nginx 설정 파일
/etc/nginx/conf.d/ (읽기 전용)
13개 파일
/etc/nginx/conf.d/blustar.conf 읽기 전용
###############################################################################
# BluStar 서비스 — Nginx 리버스 프록시 설정
#
# 도메인 → 포트/서비스 매핑:
#   blustar.co.kr / www.blustar.co.kr    → 21100 (Nextcloud, upstream)
#   memo.blustar.co.kr                   → 58600 (Joplin 메모 서비스)
#   dbadmin.blustar.co.kr:12600          → 19081 (phpMyAdmin)
#   phpmyadmin.blustar.co.kr:12610       → 19080 (Adminer)
#
# SSL 인증서: Let's Encrypt (certbot 자동 갱신)
###############################################################################

# ─── Nextcloud 업스트림 정의 ────────────────────────────────────────────────
# Nextcloud Docker 컨테이너의 내부 포트 (127.0.0.1:21100)
upstream blustar_nextcloud_backend {
    server 127.0.0.1:21100;
}

# ─── phpMyAdmin (비표준 포트 12600) ─────────────────────────────────────────
# 데이터베이스 관리 도구 — 내부망 또는 VPN 접속 권장
# Docker 컨테이너 포트 19081로 프록시
server {
    listen 12600;
    server_name dbadmin.blustar.co.kr;
    location / { proxy_pass http://127.0.0.1:19081; }
}

# ─── Adminer (비표준 포트 12610) ────────────────────────────────────────────
# 경량 데이터베이스 관리 도구 — 내부망 또는 VPN 접속 권장
# Docker 컨테이너 포트 19080로 프록시
server {
    listen 12610;
    server_name phpmyadmin.blustar.co.kr;
    location / { proxy_pass http://127.0.0.1:19080; }
}

# ─── HTTP → HTTPS 리다이렉트 (BluStar 도메인) ──────────────────────────────
# Certbot이 자동으로 관리하는 if 블록으로 HTTP(80) → HTTPS(443) 리다이렉트
server {
    # Certbot 자동 관리 블록: memo.blustar.co.kr HTTP → HTTPS
    if ($host = memo.blustar.co.kr) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    # Certbot 자동 관리 블록: www.blustar.co.kr HTTP → HTTPS
    if ($host = www.blustar.co.kr) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    # Certbot 자동 관리 블록: blustar.co.kr HTTP → HTTPS
    if ($host = blustar.co.kr) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    listen 80;
    listen [::]:80;
    server_name blustar.co.kr www.blustar.co.kr memo.blustar.co.kr;

    # Let's Encrypt 인증서 갱신을 위한 ACME challenge 경로
    location /.well-known/acme-challenge/ {
        root /var/www/certbot;
    }

    # 기본 리다이렉트: 모든 HTTP 요청 → HTTPS
    location / {
        return 301 https://$host$request_uri;
    }
}

# ─── Nextcloud (비표준 포트 21000) ──────────────────────────────────────────
# 레거시 포트 21000으로도 Nextcloud 접속 가능 (하위 호환성)
server {
    listen 21000 ssl http2;
    listen [::]:21000 ssl http2;
    server_name blustar.co.kr www.blustar.co.kr;

    ssl_certificate /etc/letsencrypt/live/blustar.co.kr/fullchain.pem;     # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/blustar.co.kr/privkey.pem;   # managed by Certbot
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    # Nextcloud는 대용량 파일 업로드를 지원하므로 20GB까지 허용
    client_max_body_size 20G;

    location / {
        proxy_pass http://blustar_nextcloud_backend;
    }
}

# ─── Nextcloud (표준 포트 443) ──────────────────────────────────────────────
# https://blustar.co.kr 으로 포트 없이 바로 Nextcloud 접속 가능
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name blustar.co.kr www.blustar.co.kr;

    ssl_certificate /etc/letsencrypt/live/blustar.co.kr/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/blustar.co.kr/privkey.pem;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    client_max_body_size 20G;

    location / {
        proxy_pass http://blustar_nextcloud_backend;

        # 프록시 헤더: 원본 클라이언트 정보를 백엔드에 전달
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # Nextcloud가 HTTPS 환경을 인식하도록 프로토콜/포트 헤더 설정
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-Port 443;

        # WebDAV 등 대용량 동기화를 위한 긴 타임아웃 (1시간)
        proxy_read_timeout 3600;
        proxy_connect_timeout 60;
        proxy_send_timeout 3600;
    }
}

# ─── Joplin 메모 서비스 (memo.blustar.co.kr) ───────────────────────────────
# Joplin Server — 메모 동기화용 백엔드
# Docker 컨테이너 포트 58600으로 프록시
server {
    listen 443 ssl http2;
    server_name memo.blustar.co.kr;

    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    # 메모에 첨부 파일 업로드를 위해 200MB 허용
    client_max_body_size 200m;

    location / {
        proxy_pass http://192.168.0.52:58600;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-Port 443;

        # Joplin 동기화는 시간이 걸릴 수 있으므로 긴 타임아웃 설정
        proxy_read_timeout 3600;
        proxy_connect_timeout 60;
        proxy_send_timeout 3600;
    }

    ssl_certificate /etc/letsencrypt/live/memo.blustar.co.kr/fullchain.pem;     # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/memo.blustar.co.kr/privkey.pem;   # managed by Certbot
}

# ─── AI Dashboard (ai.blustar.co.kr) ────────────────────────────────────────
# AI 대시보드 서비스 — 포트 33000으로 프록시
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name ai.blustar.co.kr;

    ssl_certificate /etc/letsencrypt/live/ai.blustar.co.kr/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ai.blustar.co.kr/privkey.pem;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    client_max_body_size 100m;

    location / {
        proxy_pass http://192.168.0.52:33000;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-Port 443;

        proxy_read_timeout 3600;
        proxy_connect_timeout 60;
        proxy_send_timeout 3600;
    }
}

# ─── HTTP → HTTPS 리다이렉트 (AI Dashboard) ────────────────────────────────
server {
    listen 80;
    listen [::]:80;
    server_name ai.blustar.co.kr;

    location /.well-known/acme-challenge/ {
        root /var/www/certbot;
    }

    location / {
        return 301 https://$host$request_uri;
    }
}