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

본문 바로가기

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

필기자
2023-09-25 12:45 1,640 0

본문

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

역방향 프록시 개요

역방향 프록시란?
역방향 프록시(reverse proxy)는 클라이언트와 서버 간의 통신에서 중간 역할을 함. 클라이언트가 서버에 직접 요청을 보내지 않고, 역방향 프록시를 통해 요청을 보냄. 역방향 프록시는 이 요청을 적절한 서버로 전달하고, 서버의 응답을 다시 클라이언트에게 전달함.

주요 기능
  • 로드 밸런싱: 여러 서버가 있을 때, 트래픽을 균등하게 분산시킴.
  • 캐싱: 자주 요청되는 리소스를 캐시에 저장해 빠른 응답을 가능하게 함.
  • SSL 종료: SSL/TLS 암호화와 복호화 작업을 처리함.
  • 압축: 데이터를 압축하여 전송 시간을 줄임.
  • 보안: 보안 규칙을 적용하여 서버를 외부 위협으로부터 보호함.
예시
  • Nginx, Apache HTTP Server, HAProxy 등이 있음.
  • 역방향 프록시는 웹 애플리케이션의 확장성과 보안을 향상시키는 데 유용하게 사용됨.
20231129134012_b07359d2d9f0932d39f43b32c4ecd1d7_kzpx.png

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


20231012111634_8b403c151febaae740139e04ae36c658_f8z7.png

nginx 역방향 프록시 접속 20231012112409_8b403c151febaae740139e04ae36c658_bg5f.png

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

20231012112641_8b403c151febaae740139e04ae36c658_c3cr.png
20231012112815_8b403c151febaae740139e04ae36c658_p2e0.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


20231016172237_8b403c151febaae740139e04ae36c658_xr0z.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>


각 서버에 접속
20231016173025_8b403c151febaae740139e04ae36c658_omnc.png

windows에서 host 설정

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

Nginx Proxy Manager 접속 후 Hosts 설정 20231016174124_8b403c151febaae740139e04ae36c658_29t5.png

20231016174314_8b403c151febaae740139e04ae36c658_y09f.png

각 도메인으로 접속

20231016174450_8b403c151febaae740139e04ae36c658_9k9w.png
 

댓글목록0

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