[Docker] Nginx Container reverse proxy

2024. 10. 14. 14:50·OS/Docker

먼저 이전 시간에 nginx를 구성하고 컨테이너에 뿌려주는 방식으로 진행했었다. 다음 과정을 진행하기 위해서는 nginx를 삭제해줘야한다. 왜냐하면 80번 포트를 물고 있기 때문이다.

ubuntu@docker:~$ sudo systemctl stop nginx.service
ubuntu@docker:~$ sudo apt autoremove -y nginx
ubuntu@docker:~$ sudo netstat -nlp | grep 80



Container reverse proxy


 

 

이 그림을 보면 Nginx 리버스 프록시가 로드 밸런싱을 통해 클라이언트의 요청을 여러 컨테이너로 분배를 하는 구조로 되어 있다. weight 설정 때문에 Nginx가 각 서버로 트래픽을 분배하는 것을 볼 수 있다. 하지만 트래픽 분배가 조금 다르다. 검색을 해보니 로드 밸런싱 설정은 각 서버의 역할에 따라 비율이 조정된다고 한다.

 

 

# 도커 Nginx 컨테이너 실행

ubuntu@docker:~$ docker run -d -p 8001:80 --name=proxy-container nginx:1.25.0-alpine

 

먼저 -p 8001:80 옵션을 통해 호스트의 8001번 포트를 컨테이너의 80번 포트와 연결하여, 호스트의 포트로 접근이 가능하게 했다. 

여기서는 alpine 버전을 사용해서 이전보다 경량화된 컨테이너를 실행했다. 

 

 

# Nginx 설정 파일 작성

ubuntu@docker:~$ vim nginx.conf

:

Nginx.conf 설정 파일을 열어 로드 밸런싱과 리버스 프록시를 설정했다. 3개의 백엔드 서버로 트래픽을 분배하도록 설정하였고, 이 서버들은 192.168.56.101 IP에 각각 5001, 5002, 5003 포트로 서비스 된다. 클라이언트가 / 경로로 요청을 보내면 proxy_pass를 통해 backend-alb로 트래픽이 전달된다. 

 

 

# 설정 파일을 컨테이너로 복사

ubuntu@docker:~$ docker cp nginx.conf proxy-container:/etc/nginx/nginx.conf
Successfully copied 2.05kB to proxy-container:/etc/nginx/nginx.conf

 

 

설정한 nginx.conf 파일을 Nginx 컨테이너 내부의 /etc/nginx.nginx.conf 경로로 복사해줬다.

>> 컨테이너 재시작 및 상태 확인
ubuntu@docker:~$ docker restart proxy-container
ubuntu@docker:~$ docker ps | grep proxy-container

 

 

 

# 테스트 (로드 밸런싱 확인)

ubuntu@docker:~$ curl localhost:8001

 

호스트에서 8001번 포트로 Nginx 리버스 프록시를 테스트했다. 

 

 

# 가중치(Weight) 적용

ubuntu@docker:~$ vim nginx.conf

upstream backend-alb {
    server 192.168.56.103:5001 weight=60;
    server 192.168.56.103:5002 weight=20;
    server 192.168.56.103:5003 weight=20;
}

 

ubuntu@docker:~$ docker cp nginx.conf proxy-container:/etc/nginx/nginx.conf
ubuntu@docker:~$ docker restart proxy-container

 

Nginx.conf 파일을 수정하여 가중치 기반 로드 밸런싱을 설정해줬다. 192.168.56.103 서버에 각 포트마다 트래픽을 분배해줬다. 이렇게 설정을 끝내주고 나서 반드시 변경된 설정 파일을 컨테이너에 적용해줘야하기 때문에 재시작을 해줘야한다. 

 

 

저작자표시 비영리 변경금지 (새창열림)

'OS > Docker' 카테고리의 다른 글

[Docker] Volume - Bind mount 실습  (0) 2024.10.21
[Docker] Volume (데이터 보존할 때)  (0) 2024.10.21
[Docker] - Nginx를 활용한 프록시 구성  (0) 2024.10.14
[Docker] - Container Proxy  (0) 2024.10.14
[Docker] 브리지(Bridge) Network 설정  (4) 2024.10.08
'OS/Docker' 카테고리의 다른 글
  • [Docker] Volume - Bind mount 실습
  • [Docker] Volume (데이터 보존할 때)
  • [Docker] - Nginx를 활용한 프록시 구성
  • [Docker] - Container Proxy
Kouji
Kouji
Journey to Becoming a Data & Server Engineer
  • Kouji
    Kouji's Data & Server Journey
    Kouji
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Programming
        • Python
        • SQL
      • Data & AI
        • Data Analysis
        • Ai
      • Cloud(AWS)
      • OS
        • Linux
        • Docker
        • Jenkins
        • Ubuntu
        • Window
        • Kubernates
        • Ansible
      • Network
        • NVIDIA
        • Network[이론]
        • Network[GNS3, Packet]
        • Network[On-Premise]
        • Network [L2, L3]
      • 트러블 슈팅
      • Life
        • My Career Stories
        • Personal
      • 개발 + OS 지식 함양
  • 블로그 메뉴

    • 홈
    • 관리 페이지
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    네트워크관리사
    CISCO
    AWS
    OS
    서버
    오블완
    웹
    IT
    보안
    Linux
    VMware
    스위치
    시스템엔지니어
    네트워크엔지니어
    화이팅
    docker
    클라우드엔지니어
    리눅스
    ubuntu
    티스토리챌린지
    도커
    인프라엔지니어
    네트워크엔지니어링
    라우팅
    dns
    인프라
    알고리즘
    L3
    서버엔지니어
    네트워크
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Kouji
[Docker] Nginx Container reverse proxy
상단으로

티스토리툴바