본문 바로가기

WEB/Apache,OHS

[Apache,OHS] proxy 옵션 사용 가이드 (forward,reverse)

<참고 블로그 글>

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

https://velog.io/@always0ne/Proxy-Pass%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-Apache-Web-Server%EC%97%90-WAS-%EC%97%B0%EB%8F%99%ED%95%98%EA%B8%B0

 


 

<추가로 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 가 최종적으로 화면에 출력된다

 

좌측 이미지는 Proxy 서버를 거쳐서 호출한 방식, 우측 이미지는 was 서버가 있는 시스템에서 직접적으로 호출한 방식

 

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