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

본문 바로가기

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

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

본문

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

역방향 프록시 개요

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

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

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

2049277881_wNPZDKgE_b6773dd71a4a5a0cfafc9d0513c17a0df2cb6c19.png

각 도메인으로 접속

2049277881_YdUGqoL5_0542d4e389dd5458dbe6fe20800c2a6dc07cf6ce.png
 

댓글목록0

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