Reverse Proxy
다수의 서버를 대리하는 웹서버
서버가 클라이언트에게 요청에 대한 응답하는게 아니라 reverse proxy 서버가 대신 수행함

WEB 구축
VM이름: web, cent7, 2core 2GB 20GB, IP: 211.183.3.80 /24
- tomcat 서버에서 db가 잘 연동되는지 확인

- apache 설치
[root@web ~]# yum install -y httpd
- 인덱스 파일 생성
[root@web ~]# echo 'static file' > /var/www/html/index.html

- 리버스 프록시 설정을 위해 httpd.conf 파일을 수정
[root@web ~]# vi /etc/httpd/conf/httpd.conf
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
<VirtualHost *:80> # 80번 포트로 들어오는 모든 ip에 대한 설정
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /jsp http://211.183.3.88:8080/
ProxyPassReverse /jsp http://211.183.3.88:8080/
</VirtualHost>

- 기능에 변경사항이 생겼기 때문에 재시작
[root@web ~]# systemctl restart httpd
[root@web ~]# curl localhost:80/
static file
[root@web ~]# curl localhost:80/jsp/dbtest.jsp
<h1>DB</h2>
was-db Connection Success!



ProxyPassReverse
응답하는 주체를 tomcat에서 web서버로 변경 (클라이언트가 헷갈리지 않게 하기 위해서)
- 만약 웹서버에 접속이 안된다면 tomcat 서버는 되는지 확인
- tomcat 서버가 된다면 방화벽 등 초기세팅이 잘못되지 않았는지 확인
[root@web ~]# curl 211.183.3.88:8080/dbtest.jsp
<h1>DB</h2>
was-db Connection Success!
실습)
10.10.3.80/tomcat/dbtest.jsp를 쳤을때 was-db connection success가 뜨도록 한번 구성해보세요. 서버는 3대를 다 새로 만드세요.
1. VMnet1: 10.10.3.0 대역, GNS3 설정


2. 라우터 설정
conf t
int f0/0
ip add 211.183.3.2 255.255.255.0
int f0/1
ip add 211.183.3.50 255.255.255.0
ip route 0.0.0.0 0.0.0.0 211.183.3.2
3-1. tomcat
# openjdk11과 wget, unzip을 설치
[root@tomcat ~]# yum install -y java-11-openjdk wget unzip
# 설치 파일 가져와서 압축해제
[root@tomcat ~]# wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.34/bin/apache-tomcat-10.1.34.zip
[root@tomcat ~]# unzip apache-tomcat-10.1.34.zip > /dev/null
# 이름 변경
[root@tomcat ~]# mv apache-tomcat-10.1.34/ tomcat
# tomcat 동작파일을 실행하기 위해 모든 권한 부여
[root@tomcat tomcat]# chmod 777 -R /root/tomcat
# 실행
[root@tomcat tomcat]# sh ./bin/startup.sh
3-2. db
[root@dbdb ~]# yum install -y mariadb-server
[root@dbdb ~]# systemctl restart mariadb
[root@dbdb ~]# systemctl enable mariadb
[root@dbdb ~]# mysql_secure_installation
[root@dbdb ~]# mysql -u root -p1234
MariaDB [(none)]> create database tomcatdb;
MariaDB [(none)]> grant all privileges on tomcatdb.* to tomcatuser@'%' identified by '1234';
- DB이름 : tomcatdb
- DB사용자 : tomcatuser
- DB암호 : 1234
- DB주소 : 10.10.3.6
톰캣서버로 돌아가서 mysql 명령어 설치 후 db접속이 되는지 확인
- mysql 명령어 설치
[root@tomcat tomcat]# yum install -y mysql
- db 접속 확인
[root@tomcat ~]# mysql -u tomcatuser -p1234 -h 10.10.3.6

- 아래 내용을 수정하여 dbtest.jsp 파일 생성
[root@tomcat ~]# vi dbtest.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%
Connection conn=null;
try{
String Url="jdbc:mysql://10.10.3.6/tomcatdb";
String Id="tomcatuser";
String Pass="1234";
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection(Url,Id,Pass);
out.println("was-db Connection Success!");
}catch(Exception e) {
e.printStackTrace();
}
%>
- 수정을 잘 했다면 /root/tomcat/webapps/ROOT 경로로 파일 이동
[root@tomcat ~]# mv dbtest.jsp /root/tomcat/webapps/ROOT/dbtest.jsp
3-3. reverse proxy
- 리버스 프록시 설정을 위해 httpd.conf 파일을 수정
[root@web ~]# vi /etc/httpd/conf/httpd.conf
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
<VirtualHost *:80> # 80번 포트로 들어오는 모든 ip에 대한 설정
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /tomcat http://10.10.3.88:8080/
ProxyPassReverse /tomcat http://10.10.3.88:8080/
</VirtualHost>


실습)
'외부'대역(211.183.3.0/24)에는 211.183.3.100의 주소를 갖는 mint 클라이언트가 존재하며 '내부'에는 아래와 같이 서로 다른대역에 서버들이 존재한다.
mint는 웹서버의 <주소>/tem에 접속시 간단한 무료템플릿을 볼 수 있고,
<주소>/wp 에 접속시 워드프레스 블로그,
<주소>/tom에 접근했을때는 tomcat 서버로 리버스프록시 되어 db와 잘 연동됐는지를 확인하는 페이지에 접속되길 바란다. 또한 이 페이지는 tomcat 서버에서 접속했을때는 localhost:8080/was 로 접속이 됐었다.





'AWS Cloud School 8기 > Proxy' 카테고리의 다른 글
24일차) 2025-02-03 (Proxy, Mint, SSH, Telnet, Key Pair, 3 tier Architecture) (2) | 2025.02.03 |
---|