[실습] 도커 실습 5 - 역방향 프록시를 이용한 도메인 기반 서비스
필기자
2024-10-15 22:56
680
0
본문
목차
역방향 프록시(Reverse Proxy) 개요
프록시와 역방향 프록시
구성 요소 설명
역방향 프록시 컨테이너 설치
nginx 역방향 프록시 도커 허브
nginx 역방향 프록시 컨테이너 설치
nginx 역방향 프록시 접속
nginx 역방향 프록시 admin 설정
각 서버에 접속
windows에서 host 설정
Nginx Proxy Manager 접속 후 Hosts 설정
각 도메인으로 접속
- 역방향 프록시 개요
- 역방향 프록시 컨테이너 설치
역방향 프록시(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 게이트웨이, 마이크로서비스 아키텍처, 서버 보호 및 복원 |
구성 요소 설명
- Client: 웹 브라우저나 애플리케이션 등, 서비스를 사용하는 클라이언트.
- Reverse Proxy (Nginx): 클라이언트의 요청을 받아 적절한 도커 컨테이너로 전달하고, 컨테이너의 응답을 클라이언트에게 다시 전달하는 역할을 함. Nginx나 Apache 같은 소프트웨어가 이 역할을 수행함.
- Docker Containers: 실제 서비스를 제공하는 서버가 도커 컨테이너로 구성되어 있음. 각 컨테이너는 독립적인 서비스를 제공할 수 있음.
- 클라이언트가 서비스에 접속하려고 요청을 보냄.
- 역방향 프록시(Nginx 등)가 이 요청을 받아 로드 밸런싱, 캐싱, SSL 종료 등의 작업을 수행함.
- 역방향 프록시가 요청을 적절한 도커 컨테이너로 전달함.
- 도커 컨테이너가 요청을 처리한 후 응답을 역방향 프록시에게 보냄.
- 역방향 프록시가 이 응답을 클라이언트에게 전달함.
- 이 구성을 통해 도커와 역방향 프록시를 함께 사용하면 서비스의 확장성과 유연성, 그리고 관리 편의성을 높일 수 있음.
역방향 프록시 컨테이너 설치
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
nginx 역방향 프록시 접속
- http://게스트 우분트 아이피:8181
- http://192.168.47.128:8181
- id : admin@example.com
- pw : changeme
nginx 역방향 프록시 admin 설정
- 아이디(메일), 패스워드 반드시 자신의 계정으로 변경
- 패스워드는 8자리 이상
아파치 서버 및 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 파일 생성
<!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>
각 서버에 접속
windows에서 host 설정
- 메모장 관리자 권한 실행
- C:\Windows\System32\Drivers\etc\hosts 파일 오픈
- 본인클라우드서버IP aaa.com 추가
- 본인클라우드서버IP bbb.com 추가
맥OS에서 host 파일에 도메인 추가
- /etc/hosts
#아래 내용용 입력후 저장
192.168.47.128 aaa.com
192.168.47.128 bbb.com
#hosts 변경 적용
sudo dscacheutil -flushcache
Nginx Proxy Manager 접속 후 Hosts 설정
- http://192.168.47.128:8181/nginx/proxy
- add Proxy Host
- aaa.com, bbb.com 설정
각 도메인으로 접속
댓글목록0