도커 실습 5 - 역방향 프록시를 이용한 도메인 기반 서비스 > 도커 & 쿠버네티스

본문 바로가기

[실습] 도커 실습 5 - 역방향 프록시를 이용한 도메인 기반 서비스

필기자
2024-10-15 22:56 680 0

본문

목차
  • 역방향 프록시 개요
  • 역방향 프록시 컨테이너 설치

역방향 프록시(Reverse Proxy) 개요
  • 프록시(Proxy)
    • 프록시는 클라이언트와 서버 사이에서 클라이언트의 요청을 중개하는 서버
      • 사용자와 서버 사이의 중간 지점에서 클라이언트 요청을 대리 처리하여 익명성 보호와 요청 관리 가능
    • 클라이언트 측에서 주로 설정됨
      • 사용자가 프록시 서버를 통해 웹에 접근하게 하여 특정 콘텐츠 접근 제한 우회, 캐싱을 통한 속도 향상, 접근 제어 기능 제공
    • 보안 목적으로 IP를 숨기고 필터링을 적용할 수 있어
      • 회사나 학교 네트워크 환경에서 업무 효율성과 보안 관리에 적합
  • 역방향 프록시(Reverse Proxy)
    • 역방향 프록시는 클라이언트가 서버에 접근할 때 이를 중개하여 실제 서버로 전달하는 서버
      • 클라이언트가 직접 서버에 연결되는 대신, 역방향 프록시가 모든 요청을 받아 여러 서버로 분산하거나 보안을 강화할 수 있음
    • 서버 측에서 설정됨
      • 클라이언트는 역방향 프록시 서버만을 통해 접속할 수 있으므로 서버의 IP 주소 노출 방지 및 보안 강화
    • 대규모 웹 서비스나 클라우드 인프라에서 많이 사용됨
      • 특히 웹 서버의 부하를 분산하고 서비스 가용성을 높이는 데 적합

프록시와 역방향 프록시

 

구분 프록시 (Proxy) 역방향 프록시 (Reverse Proxy)
설치 위치 클라이언트 측 (사용자 측) 서버 측 (서버 관리자 측)
기능적 위치 클라이언트와 서버 사이에서 클라이언트 측에 가까움 클라이언트와 서버 사이에서 서버 측에 가까움
설정 주체 사용자 (개별 PC/네트워크에서 설정) 서버 관리자 (서버 인프라나 네트워크 게이트웨이에서 설정)
주요 목적 클라이언트를 위한 익명성, 접근 제어, 캐싱 통한 속도 개선 서버를 보호하고, 로드 밸런싱, 보안, SSL 암호화 등 서버 관리
익명성 제공 방식 사용자의 IP 주소를 숨기고, 프록시 서버의 IP로 대체 서버의 IP 주소를 숨기고, 역방향 프록시 서버의 IP로 대체
캐싱 기능 요청한 콘텐츠를 캐시하여 클라이언트에 빠르게 제공 서버 콘텐츠를 캐시하여 여러 클라이언트 요청에 빠르게 응답
주요 사용 예 - HTTP/SOCKS 프록시
- VPN
- 웹 필터링
- Nginx, Apache (역방향 프록시)
- Cloudflare, Akamai (CDN)
보안 강화 측면 클라이언트 측 데이터 보호 및 필터링 웹 애플리케이션 방화벽(WAF), SSL 종료 등 서버 보호
트래픽 제어 방식 클라이언트의 요청을 필터링하거나 제한 가능 서버로 가는 트래픽을 분산하여 부하를 조절 (로드 밸런싱)
접근 제어 역할 웹 필터링을 통한 사이트 접근 제한 IP 접근 제어 및 요청을 적합한 서버로 라우팅
장점 익명성, 클라이언트 트래픽 필터링, 캐싱 통한 성능 향상 서버 부하 분산, 보안 강화, SSL 암호화 제공, 요청 분배
단점 모든 사용자에게 일괄 적용이 어려움 설정 및 유지 관리가 필요, 인프라가 복잡해질 수 있음
주요 사용자 최종 사용자, 기업 내부 클라이언트 네트워크 서버 관리자, 데이터센터 운영자, 클라우드 서비스 제공자
로드 밸런싱 역할 없음 여러 서버에 요청을 분배하여 서버의 부하를 조절
SSL 처리 방식 주로 클라이언트 연결을 암호화 클라이언트 연결을 SSL로 처리하여 보안 강화
속도 최적화 방식 캐시된 콘텐츠를 직접 전달하여 페이지 로딩 속도 향상 서버 콘텐츠 캐싱 및 데이터 압축을 통해 응답 속도 최적화
추가적인 활용 예시 프록시 브라우저 (Tor 등), 피싱 차단, IP 우회 API 게이트웨이, 마이크로서비스 아키텍처, 서버 보호 및 복원

2049277881_MKHvAkts_ac1ccf312a4ffa24232ab27acc71acb4efc1a8ed.png

구성 요소 설명
  • Client: 웹 브라우저나 애플리케이션 등, 서비스를 사용하는 클라이언트.
  • Reverse Proxy (Nginx): 클라이언트의 요청을 받아 적절한 도커 컨테이너로 전달하고, 컨테이너의 응답을 클라이언트에게 다시 전달하는 역할을 함. Nginx나 Apache 같은 소프트웨어가 이 역할을 수행함.
  • Docker Containers: 실제 서비스를 제공하는 서버가 도커 컨테이너로 구성되어 있음. 각 컨테이너는 독립적인 서비스를 제공할 수 있음.
작동 과정
  1. 클라이언트가 서비스에 접속하려고 요청을 보냄.
  2. 역방향 프록시(Nginx 등)가 이 요청을 받아 로드 밸런싱, 캐싱, SSL 종료 등의 작업을 수행함.
  3. 역방향 프록시가 요청을 적절한 도커 컨테이너로 전달함.
  4. 도커 컨테이너가 요청을 처리한 후 응답을 역방향 프록시에게 보냄.
  5. 역방향 프록시가 이 응답을 클라이언트에게 전달함.
  • 이 구성을 통해 도커와 역방향 프록시를 함께 사용하면 서비스의 확장성과 유연성, 그리고 관리 편의성을 높일 수 있음.
2049277881_6dtN5Lbk_6c3d92d8e3fc64769ffdcd7dc724383e42308177.png

역방향 프록시 컨테이너 설치

nginx 역방향 프록시 도커 허브
nginx 역방향 프록시 컨테이너 설치


docker run -d --name myproxy -p 8181:8181 -p 80:8080 -p 443:4443 -v /docker/appdata/nginx-proxy-manager:/config:rw jlesage/nginx-proxy-manager


2049277881_8C2ZTRKJ_f0d0c3c2ea069bb63a705043c64c0bfc27f05322.png

nginx 역방향 프록시 접속 2049277881_RYX3dyZa_beffb255bf45863e4e3e3c3d54966a36772833f8.png

nginx 역방향 프록시 admin 설정
  • 아이디(메일), 패스워드 반드시 자신의 계정으로 변경
  • 패스워드는 8자리 이상

2049277881_c5imA0QI_f54ffc660cd7228ddd916c20637c394ffc476d79.png
2049277881_brLzMQ9o_26eb3820f2a20e123f775037b57ce4e17f2c19a3.png

아파치 서버 및 nginx 서버 컨테이너 설치


mkdir apacheHome
mkdir nginxHome
docker run --name myapache -d -p 8001:80 -v ~/apacheHome:/usr/local/apache2/htdocs httpd
docker run --name mynginx -d -p 8002:80 -v ~/nginxHome:/usr/share/nginx/html nginx


2049277881_29Tnx7YN_6ad41986f118f6d1d665f93ee417ba08f632fd23.png

각 폴더에 index.html 파일 생성


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>아파치 서버</title>
</head>
<body>
<h1>아파치 서버</h1>
</body>
</html>


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>엔진X 서버</title>
</head>
<body>
<h1>엔진X 서버</h1>
</body>
</html>


각 서버에 접속
2049277881_1DuhV9q6_b4e634772241a1c298e043df5580d4fed4635232.png

windows에서 host 설정

  • 메모장 관리자 권한 실행
2049277881_EWKd97lt_b7c7e987cca6dc6d765d9ff692e786012c4d0f3d.png
  • C:\Windows\System32\Drivers\etc\hosts 파일 오픈
  • 본인클라우드서버IP aaa.com 추가
  • 본인클라우드서버IP bbb.com 추가
2049277881_kWGhcuTO_864ce4c6b9177b032731b8045267b572b7d06f3c.png
 

맥OS에서 host 파일에 도메인 추가

  • /etc/hosts


#아래 내용용 입력후 저장
192.168.47.128 aaa.com
192.168.47.128 bbb.com



#hosts 변경 적용
sudo dscacheutil -flushcache



Nginx Proxy Manager 접속 후 Hosts 설정 2049277881_H3X1dMug_d4409d817c7ad6753c1474af236f611b13be133b.png

2049277881_wNPZDKgE_b6773dd71a4a5a0cfafc9d0513c17a0df2cb6c19.png

각 도메인으로 접속

2049277881_YdUGqoL5_0542d4e389dd5458dbe6fe20800c2a6dc07cf6ce.png
 

댓글목록0

등록된 댓글이 없습니다.
게시판 전체검색