[EC2] Apache↔ Tomcat Mod_Proxy 연동

앙금빵·2021년 9월 12일
0

WEB/WAS

목록 보기
4/6
post-thumbnail

블로그 이전 안내

더 높은 가독성과 고품질의 글을 작성하기 위해 티스토리로 이전하였습니다.
https://anggeum.tistory.com/WEB-WAS-Apache↔Tomcat-modjk연동

Prerequisite

  • Apache 설치
  • Tomcat 설치

Mod_Proxy 연동

  • 별도 모듈 설치가 필요없고 (apache 기본 모듈) 설정이 간편하다.
  • HTTP Reverse Proxy로 동작하며 특정 WAS에 Independent 하다.
  • HTTP를 제공하는 모든 WAS에 적용가능하다.

Step 1. 아파치 설정 확인

# 아파치 httpd.conf 설정

vim /usr/local/apache2/conf/httpd.conf

# ServerName 을 검색해서 아래와 같이수정
----
ServerName 127.0.0.1:80

# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other 
# <Directory> blocks below.

<Directory />
    AllowOverride none
#   Require all denied
    Require all granted
</Directory>
----

Proxy 연동시 ServerName & Directory 반드시 설정

  • Require all granted: 무조건 허용
  • Require all denied: 무조건 금지
  • Require ip 10 172.20 192.168.2: 특정 아이피만 접근 허용.
    (여기서는 10172.20192.168.2로 시작하는 아이피 세 개를 허용한다는 의미)

Step 2. 가상 호스트 설정하기

가상 호스트 파일 설정 이유

참조: https://checksum.tistory.com/2

  • 웹 개발 서버로 사용할 때 여러 계정이 필요한 경우 발생
  • 스크립트 내부에서 Document Root를 가르키는 환경변수를 사용한다면 문제가 발생한다.
  1. 일반적 계정 추가방식은 http://localhost/~abc 등의 형태
  2. 계정이 몇개가 되던 Document Root는 단 하나를 가르킨다.
  3. 이를 가상 호스트를 사용하여 문제를 해결한다.
# /apache/conf/httpd.conf 파일 열어 아래 모듈 주석을 해제하자.

LoadModule negotiation_module modules/mod_negotiation.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

[root@ip-10-0-1-70 conf]# pwd
/usr/local/apache2/conf

# VirtualHost 정의 부분에 들어가여 아래와 같은 행을 추가한다.
sudo vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

---

<VirtualHost *:80>

	ServerName localhost

# 포워드 Proxy 경우 On Reverse Proxy Off
	ProxyRequests Off

# HTTP 호스트가 받은 HTTP 요청을 Proxy 요청시 사용 Reverse 경우 On으로 해야함
	ProxyPreserveHost On

	<Proxy *>        
		Order deny,allow
    Allow from all
	</Proxy>

# Proxy에 연결할 URL 기술 ServerHost:localhost -> Apache -> ProxyPass URL
	ProxyPass / http://<<WAS IP>>:8080/

# <ProxyPassReverse>
# 1 WAS 가 redirect HTTP 응답을 보냈을 경우 Location, Content-Location HTTP 헤더를 수정
# 2 클라이언트에 전달한다. 러비스 프락시가 이 헤더를 수정하지 않으면
# 3 클라이언트는 redirect 시 제대로 연결할 수 없으므로 꼭 설정해야 한다.

	ProxyPassReverse / http://<<WAS IP>>:8080/
    <Location />
        Order allow,deny
        Allow from all
    </Location>

</VirtualHost>

---

Step 3. 동작 확인

# Static Content Request
[ec2-user@localhost ~]$ curl localhost
<html><body><h1>It works!</h1></body></html>

---

# /index.jsp (Dynamic Content Request)
[ec2-user@localhost ~]$ curl localhost/index.jsp

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>Apache Tomcat/8.5.69</title>
        <link href="favicon.ico" rel="icon" type="image/x-icon" />
        <link href="tomcat.css" rel="stylesheet" type="text/css" />
    </head>

....

참조

(★) Directory
https://mytory.net/archives/3143

(★) 포트번호로 아파치 가상 호스트 설정하기
https://mytory.net/archives/13

Apache Tomcat 간단히 mod_proxy 방식으로 연동
https://swealth.tistory.com/200

profile
Cloud 관련 개인 공부 지식들을 기록하는 공간입니다.

0개의 댓글