본 게시글은 아파치를 사용하여 한 서버에 여러 서비스를 호스팅 하고 싶을때
리버스 프록시를 사용해 구현하는 법을 서술할 것이다.
apache를 WAS랑 연동할때 이 방법을 사용하여도 좋다.(오히려 간단해서 좋다)
본 게시글에서는 HTTPS를 지원하는 것을 전제로 한다.
리버스 프록시를 사용하여 웹 어플리케이션을 연동을 하기 위해선 apache conf파일에 아래와같이 VirtualHost를 추가해 주면 된다.
<VirtualHost *:443>
ServerName domain.com
ServerAlias <원하는 주소> ex)blog.domain.com or www.domain.com...
ServerAdmin <email주소>
ProxyRequests Off
SSLProxyEngine on
ProxyPreserveHost On
AllowEncodedSlashes NoDecode
<Proxy *>
Order deny,allow
Allow from all
</proxy>
SSLEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
SSLCertificateFile "<인증서 경로>/cert.pem"
SSLCertificateKeyFile "<인증서 경로>/privkey.pem"
SSLCertificateChainFile "<인증서 경로>/chain.pem"
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
ErrorLog <로그 경로>/docker-error.log
CustomLog <로그 경로>/docker-access.log combined
</VirtualHost>
web Server는 Main Host외의 별도의 가상 Host를 사용하여 1개의 서버에서 여러개의 웹서버를 운영할 수 있다.
본 게시글에서는 WAS를 연동하는 것이 목적이기 때문에 DocumentRoot를 사용하는 대신 RerverseProxy를 사용할 것이다.
ServerName
은 서비스할 도메인이며 ServerAlias
는 서버의 별칭이다.
ErrorLog
는 에러로그의 경로이며, CustomLog
는 접속 로그의 경로이다.
proxyRequests Off
proxyPreserveHost On
AllowEncodedSlaxhes NoDecode
<proxy *> Order deny,allow Allow from all </proxy>
proxypass /<이곳에 경로를 설정해도 된다 ex)blog> http://127.0.0.1:8080/
proxypassReverse /<이곳에 경로를 설정해도 된다 ex)blog> http://127.0.0.1:8080/
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
SSLEngine on
SSLCertificateFile "<인증서 경로>/cert.pem"
SSLCertificateKeyFile "<인증서 경로>/privkey.pem"
SSLCertificateChainFile "<인증서 경로>/chain.pem"
SSLEngine을 사용하여 Apache가 SSL을 지원하도록 하는 옵션들이다.
이때, <VirtualHost *:443>
로 443포트로 매핑해주는 것이 좋다.
virtual host와 reverse Proxy를 사용하여 WAS를 apache WebServer와 연동을 하였다.
응용으로 virtualHost를 여러개 생성해 적용을 하면 한 서버에 여러 도메인을 올려 사용할 수 있기도 하며,
한 프록시 서버로 내부망의 모든 서버의 접근을 관리할 수 있다.