<참고 블로그 글>
http://www.lesstif.com/system-admin/forward-proxy-reverse-proxy-21430345.html
https://dany-it.tistory.com/107
https://httpd.apache.org/docs/2.4/ko/urlmapping.html
https://arclab.tistory.com/103
https://fruitdev.tistory.com/106
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=writer0713&logNo=221049806513
https://httpd.apache.org/docs/2.4/mod/mod_proxy_connect.html
<추가로 load 필요한 모듈>
(필수로 필요한 모듈)
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
(http 프로토콜로 프록시 전달할 경우)
LoadModule proxy_http_module modules/mod_proxy_http.so
(ajp 프로토콜로 프록시 전달할 경우)
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
(ws 프로토콜로 프록시 전달할 경우)
LoadModule proxy_ajp_module modules/mod_proxy_wstunnel.so
<Forward Proxy / Reverse Proxy>
ProxyRequests 옵션을 어떻게 설정하는지에 따라
Forward Proxy 로 동작할지 Reverse Proxy 로 동작할지 결정된다.
ProxyRequests On -> Forward Proxy
ProxyRequests Off -> Reverse Proxy
<Forward Proxy 설정 예시>
httpd.conf 파일에 아래 옵션을 추가한다.
ProxyRequests On
ProxyVia On
<Proxy "*">
Require all granted
</Proxy>
AllowCONNECT 8080
AllowCONNECT 옵션에 작성하는 포트 번호는
프록시 서버를 거쳐서 최종적으로 호출하게 될 api 주소의 포트 번호를 의미한다.
ex) 프록시 서버를 거쳐 최종적으로 호출하게 될 api의 주소가 아래와 같다면
https://api.keuangkuo.com:8080/getAddress
AllowCONNECT 옵션에 8080 포트를 추가한다.
#. 테스트
export http_proxy=http://{프록시서버IP}:{프록시서버 HTTP PORT}
export https_proxy=http://{프록시서버IP}:{프록시서버 HTTP PORT} (왜 ssl 포트로 작성 안하는지는 추후 알아보자)
export no_proxy="127.0.0.1, localhost" (해당 옵션은 필수 아님)
curl -i -X PUT -d curl https://api.keuangkuo.com:8080/getAddress
curl https://api.keuangkuo.com:8080/getAddress
<Reverse Proxy 설정 예시 - http 프로토콜>
OHS 서버의 httpd.conf 에 아래의 옵션 추가
ProxyPass {프록시 서버에서의 호출 URL} {Application 처리할 서버에서의 호출 URL}
ProxyPassReverse {프록시 서버에서의 호출 URL} {Application 처리할 서버에서의 호출 URL}
상황 예시)
Proxy 서버 IP : 192.168.56.3
Remote 서버 IP : 192.168.56.2
OHS Listen Port : 양측 모두 80
---------------------------------------
Proxy 서버의 httpd.conf 에 옵션 추가
ProxyPass /send/send.do http://192.168.56.2/send/send.do
ProxyPassReverse /send/send.do http://192.168.56.2/send/send.do
---------------------------------------
http://192.168.56.3/send/send.do 를 호출하면 (Proxy 서버의 IP Address)
http://192.168.56.2/send/send.do 가 최종적으로 화면에 출력된다
send.do로 호출하고 최종적으로 send.jsp 가 호출되도록 테스트 해 보았음.
호출 URL이 반드시 .do 확장자여야 하는 것은 아님.
Proxy Server 쪽에 send.do 라는 파일은 존재하지 않으며
최종적으로 Remote 서버의 정보를 호출하기 위한 수단으로만 사용된다.
<Reverse Proxy 설정 예시 - ws 프로토콜>
httpd-ssl.conf 파일에 아래 옵션을 추가한다.
(wss 프로토콜로 들어오는 요청만 WAS서버로 proxy 전달하도록 설정)
ProxyRequests Off
ProxyPreserveHost On
ProxyPass /websocket ws://127.0.0.1:8000/websocket
ProxyPassReverse /websocket ws://127.0.0.1:8000/websocket
web socket을 사용하는 경우 ws 프로토콜을 사용하게 된다.
기본적인 원리는 http, https 프로토콜 사용 시와 동일하다.
암호화 되지 않은 프로토콜인 ws 와 (http에 대응)
암호화 프로토콜인 wss 가 있다 (https에 대응)
SSL 인증서를 보통 WEB 서버에 설정하므로
우선 맨 처음에 WEB서버로 request가 들어올 시에는 https 프로토콜로 호출하는 것이 일반적이다.
WAS 서버에서는 SSL 인증서를 사용하지 않으므로
WAS 서버로 proxy를 전달 시에는 http 프로토콜로 전달하게 된다.
web socket도 동일하게
WEB 서버에 wss 프로토콜로 요청이 들어오면
WAS 서버에 ws 프로토콜로 proxy 전달하는 원리이다.
'WEB > Apache,OHS' 카테고리의 다른 글
OHS 웰컴페이지 설정 (0) | 2021.08.10 |
---|---|
[OHS12cR2] orapki 관련 에러 현상 (0) | 2021.07.13 |
OHS 12cR1 (12.1.3.0) 설치 (0) | 2021.05.13 |
[OHS] WLS Plugin Parameter 옵션 목록 (0) | 2021.04.16 |
[OHS] 디렉토리 리스팅 차단하기 (0) | 2021.04.15 |