Reverse Proxy Server 실습

2025. 2. 4. 15:40AWS Cloud School 8기

✅ 문제

10.10.3.80/tomcat/dbtest.jsp를 쳤을때 was-db connection success가 뜨도록 한번 구성해보세요. 서버는 3대를 다 새로 만드세요.

 

1️⃣ DB 서버

 

VM: 10.10.3.33

 

1. mariadb-server 설치

yum install -y mariadb-server

 

 

2. mysql  설정

mysql_secure_installation

 

 

3. root로 접속

mysql -u root -p1234

 

 

4. db 생성

create database hidb;

 

 

5. 사용자 권한 부여

  • db 주소: 10.10.3.33
  • db 이름: hidb
  • db유저: testuser
  • 유저 암호: 1234
grant all privileges on hidb.* to testuser@'%' identified by '1234';

 

2️⃣ tomcat (= WAS)

 

VM: 10.10.3.88

 

1. openjdk 다운로드

yum install -y java-11-openjdk wget unzip

 

 

2. tomcat 패키지 설치: https://tomcat.apache.org/download-10.cgi

 

Apache Tomcat® - Apache Tomcat 10 Software Downloads

Welcome to the Apache Tomcat® 10.x software download page. This page provides download links for obtaining the latest version of Tomcat 10.1.x software, as well as links to the archives of older releases. Unsure which version you need? Specification versi

tomcat.apache.org

 

  • wget으로 설치
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.34/bin/apache-tomcat-10.1.34.zip
  • unzip
unzip apache-tomcat-10.1.34.zip > /dev/null
  • 이름 변경
mv apache-tomcat-10.1.34/ tomcat

 

 

3. tomcat으로 이동

cd /root/tomcat

 

4. tomcat 파일 권한 부여

chmod 777 -R /root/tomcat

 

5. tomcat 실행(pwd: /root/tomcat)

./bin/startup.sh

 

6. /root/tomcat/webapp/ROOT/dbtest.jsp 파일 생성

  • db 접속 확인 파일
    • db 주소: 10.10.3.33
    • db 이름: hidb
    • db유저: testuser
    • 유저 암호: 1234
cat <<EOF > dbtest.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<h1>DB</h2>
<%
        Connection conn=null;
        try{
                String Url="jdbc:mysql://<DB주소>/<DB이름>";
                String Id="<DB유저>";
                String Pass="<유저암호>";

                Class.forName("com.mysql.jdbc.Driver");
                conn=DriverManager.getConnection(Url,Id,Pass);
                out.println("was-db Connection Success!");
        }catch(Exception e) {
                e.printStackTrace(); 
}
%>

EOF

 

 

5. jdbc 설치: db와 소통하기 위한 커켁터 역할

 

https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.23

  • 우클릭으로 링크 복사

 

 

6. jdbc 다운로드: wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.23/mysql-connector-java-8.0.23.jar

 

 

7. lib 경로로 이동

mv mysql-connector-java-8.0.23.jar /root/tomcat/lib/

 

8. tomcat 재시작

./bin/shutdown.sh
./bin/startup.sh

 

🔥여기서 문제 발생!!

더보기
tomcat 서버에서
- mysql을 깔고 mysql -u testuser -p1234 -h 10.10.3.33으로는 접속이 되지만,
- 웹브라우저에서는 접속 안됨 (http://10.10.3.88:8080/dbtest.jsp)

✅ 문제 분석
1. tomcat의 db 커넥터 설정 확인 => 문제 없음
2. tomcat에서 dbtest.jsp가 아닌 루트디렉토리 접근해보기(http://10.10.3.88:8080) => 여전히 문제발생!

💡원인
db 커넥팅 과정의 문제가 아닌 tomcat 서버의 문제

🔎 해결
tomcat 껐다 키기 ./bin/shutdown.sh , ./bin/startup.sh

 

 

3️⃣ Web 서버(= Reverse Proxy Server)

VM: 10.10.3.80

 

1. 웹 서버 설치

yum install -y httpd

 

 

2. 프록시 서버 설정 파일

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>
    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>

 

🔥 여기서 궁금한 점

더보기

 

위와 같이 설정해도 될까?

사실상 통신은 되지만 이렇게 설정하면 정말 이상한것임!!

 

3. reverse proxy server을 통해 db와 접근

curl 10.10.3.80/tomcat/dbtest.jsp

 

 4. 웹 브라우저 접속해보기

  • http://10.10.3.88:8080/dbtest.jsp
    • Request URL: 요청할때
    • 사이에 Reverse Proxy Server(10.10.3.88:8080)가 연결해줌
    • Remote Address:요청 받을때