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

18 Oct 2023 - juno

#cloud  #docker 


2023-10-18 클라우드 프로그래밍 7주차 강의


  1. 역방향 프록시 개요
  2. 역방향 프록시 컨테이너 설치

역방향 프록시 개요

역방향 프록시란?

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

    아이패드 그림 참조

주요 기능

예시

구성 요소 설명

작동 과정

  1. 클라이언트가 서비스에 접속하려고 요청을 보냄.
  2. 역방향 프록시(Nginx 등)가 이 요청을 받아 로드 밸런싱, 캐싱, SSL 종료 등의 작업을 수행함.
  3. 역방향 프록시가 요청을 적절한 도커 컨테이너로 전달함.
  4. 도커 컨테이너가 요청을 처리한 후 응답을 역방향 프록시에게 보냄.
  5. 역방향 프록시가 이 응답을 클라이언트에게 전달함.

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

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
    8181: 관리자 접속 포트
    80: http
    443: https

nginx 역방향 프록시 접속

nginx 역방향 프록시 admin 설정

도메인 페이크 해야됨 aaa.com이 이미 존재하기떄문에 호스트 컴퓨터 내에서 aaa.com으로 접속을하면 기존에 있는 그 도메인이 아니라 내가 설정한 IP로 접속할 수 있게 해줘야 함

아파치 서버 및 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

각 폴더에 index.html 파일 생성

# 폴더 이동
cd /apacheHome
# 파일 생성
vi index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>아파치 서버</title>
</head>
<body>
<h1>아파치 서버</h1>
</body>
</html>
# 폴더 이동
cd /nginxHome
# 파일 생성
vi index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>엔진X 서버</title>
</head>
<body>
<h1>엔진X 서버</h1>
</body>
</html>

결과

image image

nginx proxy manager로 도메인 설정 과정

도메인 페이크(hosts 파일 변경)

루트 권한으로 hosts 파일로 이동

sudo vi private/etc/hosts

image

원하는 IP와 도메인 추가

Nginx Proxy Manager 접속 후 Hosts 설정

172.16.147.129:8181로 Nginx Proxy Manager 접속

image

image

image

도메인 주소를 통한 페이지 접속

image image

역방향 프록시를 통한 도메인 기반 서비스 만들기 성공!

reference

교수님 블로그 및 강의, hull.kr