2009.07.28 14:58

Apache + JBoss 연동 및 HTTPS(SSL 통신)

JBoss를 아파치와 연동을 하는 부분을 시도해보겠다. 일단 준비물은 아래와 같다.

1. httpd-2.2.11
     (apache 2.2.11 openssl을 이용하여 https 서비스가 가능게 설치된것)
2. JBoss 5.1.0 GA 
     (5.x 버전이면 크게 상관이 없을듯하다. 4.x 버젼과 조금은 차이가 있지만....)
3. mod_jk 1.2.28

 
1. %APACHE_HOME/conf/httpd.conf 수정
 
  1. .. 생략 .. (파일 마지막 부분)   
  2. # Secure (SSL/TLS) connections   
  3. Include conf/extra/httpd-ssl.conf  <---- ssl 통신(https)을 사용한다면...주석해제..   
  4. #   
  5. # Note: The following must must be present to support   
  6. #       starting without SSL on platforms with no /dev/random equivalent   
  7. #       but a statically compiled-in mod_ssl.   
  8. #   
  9. <IfModule ssl_module>  
  10. SSLRandomSeed startup builtin   
  11. SSLRandomSeed connect builtin   
  12. </IfModule>  
  13.   
  14. # Include mod_jk configuration file   
  15. Include conf/mod-jk.conf                         <------- mod_jk 설정 파일 추가   
  16.   
  17. # http 프로토콜로 클라이언트가 요청시 https로 리와이트 시켜주는 부분   
  18. # ssl통신(https) 사용안하면 추가해주지 않아도 됨   
  19. RewriteEngine On   
  20. RewriteCond %{HTTPS} !=on   
  21. RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

 
2. %APACHE_HOME/conf/mod-jk.conf 생성
 
  1. # Load mod_jk module   
  2. # Specify the filename of the mod_jk lib   
  3. LoadModule jk_module modules/mod_jk.so   
  4.   
  5. # Where to find workers.properties   
  6. JkWorkersFile conf/workers.properties   
  7.   
  8. # Where to put jk logs   
  9. JkLogFile logs/mod_jk.log   
  10.   
  11. # Set the jk log level [debug/error/info]   
  12. JkLogLevel info   
  13.   
  14. # Select the log format   
  15. JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"   
  16.   
  17. # JkOptions indicates to send SSK KEY SIZE   
  18. # Note: Changed from +ForwardURICompat.   
  19. # See http://tomcat.apache.org/security-jk.html   
  20. JkOptions +ForwardKeySize +ForwardURICompatUnparsed -ForwardDirectories   
  21.   
  22. # JkRequestLogFormat   
  23. JkRequestLogFormat "%w %V %T"   
  24.   
  25. # You can use external file for mount points   
  26. # It will be checked for updates each 60 secondes   
  27. # The format of the file is : /url=worker  
  28. # /examples/*=loadbalancer   
  29. JkMountFile conf/uriworkermap.properties  
 
 
3. %APACHE_HOME/conf/workers.properties 생성
 
  1. # Define list of workers that will be used   
  2. # for mapping requests   
  3. # The configuration directives are valid   
  4. # for the mod_jk version 1.2.18 and later   
  5. worker.list=xbrlworker  
  6.   
  7. # Define Node1   
  8. # modify the host as your host IP or DNS name   
  9. worker.xbrlworker.port=8009  
  10. worker.xbrlworker.host=localhost  
  11. worker.xbrlworker.type=ajp13  

 
4. %APACHE_HOME/conf/uriworkermap.properties 생성
 
  1. # Simple worker configuration file   
  2. #   
  3.   
  4. # Mount the Servlet context to the ajp13 worker   
  5. /jmx-console=xbrlworker  
  6. /jmx-console/*=xbrlworker   
  7. /web-console=xbrlworker  
  8. /web-console/*=xbrlworker  

 
5. %JBOSS_HOME/server/default/deploy/jbossweb.sar/server.xml 수정
 
  1. <Service name="jboss.web">  
  2. ... 생략 ...   
  3.       <!-- A HTTP/1.1 Connector on port 8080 -->  
  4.       <!-- URIEncoding="UTF-8" 추가 -->  
  5.       <Connector protocol="HTTP/1.1" port="8080" address="${jboss.bind.address}"  
  6.                connectionTimeout="20000" redirectPort="8443"  URIEncoding="UTF-8" />  
  7. ... 생략 ...   
  8. <!-- SSL/TLS Connector configuration using the admin devl guide keystore   
  9.       <Connector protocol="HTTP/1.1" SSLEnabled="true"  
  10.            port="8443" address="${jboss.bind.address}"  
  11.            scheme="https" secure="true" clientAuth="false"  
  12.            keystoreFile="${jboss.server.home.dir}/conf/chap8.keystore"  
  13.            keystorePass="rmi+ssl" sslProtocol = "TLS" />  
  14.       -->  
  15.       <!-- jvmRoute="xbrlworker" 추가 -->  
  16.       <Engine name="jboss.web" defaultHost="localhost" jvmRoute="xbrlworker" >  
  17. ... 생략 ...  

 
6. %APACHE_HOME/conf/extra/httpd-ssl.conf 수정
(https 통신을 위한 설정 - https가 필요없다면 하지 않아도 된다.)

  1. ... 생략 ... (파일 마지막 부부분 </VirtualHost> 위에 JKMountFile 설정 ...)   
  2. JkMountFile conf/uriworkermap.properties   
  3. </VirtualHost>  

 
7. apache 구동

    # apachectl start  

 
8. JBoss 구동

  
  # run.sh &

※ 주의
 JBoss만 구동하여 외부에서 접속하기 위해서는 구동시 -b 옵션으로 서버IP를 설정해야 하지만, 아파치와 연동시 -b 옵션을 주게되면 아파치와 연동이 안된다.
 %APACHE_HOME/conf/workers.properties 파일에서 설정한 host 부분때문인것 같은데, host 부분이 localhost로 되어있기때문에 127.0.0.1의 호출로 JBoss를 연결하지 못하기 때문인듯하다. 외부에서 직접 JBoss의 접속을 사용하지 않는다면 그냥 설정한데로 사용하면 될듯!!!

 
9. https://[서버]/jmx-console/ 테스트

10. https://[서버]/web-console/ 테스트
위 테스트는 https 를이용하여 접속한것이기 때문에 주소창이 빨강색으로 표시된다.
https 를 사용하지 않고 하는 방법은 위에 https 설정만 빼고 하면 된다.


출처 : http://tylee82.tistory.com/
저작자 표시
신고

Trackback 0 Comment 0