Docker다중서버

Docker다중서버

Docker 컨테이너 다중 서버 프록시 예제
Nginx를 Docker Compose로 여러 컨테이너에 프록시하는 예제를 제공합니다. 공유 네트워크를 통해 컨테이너 이름을 호스트로 사용하며, SSL 종료를 포함합니다.[1][2]

Docker Compose 파일

하나의 docker-compose.yml로 nginx와 여러 백엔드 컨테이너를 정의합니다. 네트워크를 공유해 내부 통신을 간단히 합니다.[1]

version: '3.8'
services:
  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./ssl:/etc/nginx/ssl  # SSL 인증서 마운트
    depends_on:
      - app1
      - app2
    networks:
      - proxy-net
  app1:
    image: nginx:alpine  # 예제 백엔드1
    networks:
      - proxy-net
  app2:
    image: nginx:alpine  # 예제 백엔드2
    networks:
      - proxy-net
networks:
  proxy-net:

Nginx 설정 (nginx.conf)

upstream으로 여러 컨테이너를 그룹화하고 SSL을 처리합니다. path 기반 라우팅 예시입니다.[1][2]

events {}
http {
    upstream backends {
        least_conn;
        server app1:80;
        server app2:80;
    }
    server {
        listen 80;
        server_name yourdomain.com;
        return 301 https://$host$request_uri;
    }
    server {
        listen 443 ssl http2;
        server_name yourdomain.com;
        ssl_certificate /etc/nginx/ssl/fullchain.pem;
        ssl_certificate_key /etc/nginx/ssl/privkey.pem;
        location /app1/ {
            proxy_pass http://backends/app1/;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
        location /app2/ {
            proxy_pass http://backends/app2/;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
}

실행 및 SSL 설정

  1. docker-compose up -d로 시작.
  2. SSL: Certbot 컨테이너 추가 또는 호스트에서 certbot certonly --standalone 후 volumes 마운트.[3]
  3. 테스트: curl https://yourdomain.com/app1/ – 로드 밸런싱 확인.[1]
    Docker 환경에서 컨테이너 이름으로 proxy_pass 사용이 핵심이며, 사용자 LLM 서버에 맞게 app1/app2 이미지를 교체하세요.[4]
    인용:
    [1] Docker compose : Nginx reverse proxy with multiple containers https://stackoverflow.com/questions/75584792/docker-compose-nginx-reverse-proxy-with-multiple-containers
    [2] Setting Up a Reverse Proxy with Nginx and Docker-Compose https://support.tools/nginx-docker-compose-reverse-proxy/
    [3] Nginx Virtual Host https://dimuthukasunwp.github.io/Articles/Hosting-multiple-sites-or-applications-using-Docker-and-NGINX-reverse-proxy-with-Letsencrypt-SSL.html
    [4] How can I share an nginx reverse proxy with multiple containers? https://www.reddit.com/r/docker/comments/q9jfqp/how_can_i_share_an_nginx_reverse_proxy_with/
    [5] How to Host Multiple Docker Containers on a Single Server with Nginx Reverse Proxy? https://www.youtube.com/watch?v=spbkCihFpQ8
    [6] How to run multiple containers with an Nginx reverse proxy - catalyst2 https://www.catalyst2.com/knowledgebase/networking/how-to-run-multiple-containers-with-an-nginx-reverse-proxy/
    [7] Enable reverse proxy on multiple containers with single host listening to same port · nginx nginx · Discussion #315 https://github.com/nginx/nginx/discussions/315
    [8] NGINX 다중 서버 upstream 설정 https://blog.naver.com/PostView.naver?blogId=hanajava&logNo=223124444196&categoryNo=87&proxyReferer=&noTrackingCode=true
    [9] Multiple docker containers https://www.reddit.com/r/nginxproxymanager/comments/1ihrve2/multiple_docker_containers/
    [10] Hosting multiple sites or applications using Docker and NGINX ... https://olex.biz/2019/09/hosting-with-docker-nginx-reverse-proxy-letsencrypt/
    [11] Nginx 웹 서버 포트 별로 Reverse Proxy 설정 - ben_DS https://bentist.tistory.com/81
    [12] Reverse proxy for same port multiple containers - Docker Forums https://forums.docker.com/t/reverse-proxy-for-same-port-multiple-containers/51293
    [13] Docker를 활용한 Nginx 가상 호스트 설정과 멀티사이트 운영 https://velog.io/@kkd0059/Docker를-활용한-Nginx-가상-호스트-설정과-멀티사이트-운영
    [14] Nginx with multiple containers - Help https://community.letsencrypt.org/t/nginx-with-multiple-containers/199378
    [15] serving multiple docker microservices behind nginx proxy https://stackoverflow.com/questions/41837020/serving-multiple-docker-microservices-behind-nginx-proxy
개인정보보호링크