Engineering/WEB & WAS
[WEB/WAS] Apache↔ Tomcat Mod_Proxy 연동
Prerequisite
- Apache 설치 (v2.4)
- Tomcat 설치 (v8.5)
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: 특정 아이피만 접근 허용.
(여기서는 10, 172.20, 192.168.2로 시작하는 아이피 세 개를 허용한다는 의미)
Step 2. 가상 호스트 설정하기
가상 호스트 파일 설정 이유
참조: https://checksum.tistory.com/2
- 웹 개발 서버로 사용할 때 여러 계정이 필요한 경우 발생
- 스크립트 내부에서 Document Root를 가르키는 환경변수를 사용한다면 문제가 발생한다.
- 일반적 계정 추가방식은 http://localhost/~abc 등의 형태
- 계정이 몇개가 되던 Document Root는 단 하나를 가르킨다.
- 이를 가상 호스트를 사용하여 문제를 해결한다.
# /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@localhost 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>
---
# 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
'Engineering > WEB & WAS' 카테고리의 다른 글
[Tomcat] Crontab을 이용한 톰캣 로그 관리 (0) | 2021.11.22 |
---|---|
[Tomcat] 톰캣 서비스 등록 (0) | 2021.11.22 |
[Tomcat] Tomcat v8.5 설치 (Source Compile) (0) | 2021.11.22 |
[Apache] 아파치 HTTPD Server v2.4.52 설치 (Source Compile) (0) | 2021.11.22 |
[WEB/WAS] Apache↔Tomcat mod_jk연동 (+ APR Connector) (2) | 2021.11.21 |
댓글