제목 | Apache mod_jk VirtualHost 설정 | ||||||
글쓴이 | 이지섭 | 작성일 | 2018-02-04 | 수정일 | 2024-08-12 | 조회수 | 12972 |
[ httpd.conf ]httpd-vhosts.conf 파일을 Include 하고, mod_jk.conf 설정 파일을 만들어서 또 Include 한다. # Virtual hosts Include conf/extra/httpd-vhosts.conf ...(중략)... Include conf/mod_jk.conf [ mod_jk.conf ]컴파일 하여 설치한 mod_jk.so 모듈을 로딩한다. JkMount 같은 방법도 있지만 JkMountFile 옵션을 써서 톰캣에서 연동할 URI 패턴을 설정한다. LoadModule jk_module modules/mod_jk.so <IfModule jk_module> JkWorkersFile conf/workers.properties JkLogFile logs/mod_jk.log JkLogLevel info JkMountFile conf/uri.properties </IfModule> [ workers.properties ]mod_jk 모듈에서 톰캣에 연동할 때 동작할 worker 의 이름과 포트, 타입 등을 설정한다. ajp13 프로토콜의 포트는 톰캣의 server.xml 파일에서 설정할 수 있다. worker (톰캣) 가 여러 대일 경우 워커명을 콤마(,)로 구분하여 worker.list 에 나열한다. worker.list=worker1 worker.worker1.port=8009 worker.worker1.host=localhost worker.worker1.type=ajp13 worker.worker1.lbfactor=1 [ uri.properties ]첫번째 설정 (/*) 에서 모든 파일을 Tomcat 에서 처리하도록 한 후, ! (Exclude) 패턴을 사용하여 Tomcat 이 아닌 Apache 에서 처리할 URI 패턴을 지정한다. /*=worker1 /*.jsp=worker1 /*.do=worker1 [ httpd-vhosts.conf ]mod_jk.conf 에서 적용한 uri.properties 설정을 각 VirtualHost 에 적용해주는데 (JkMountFile), 각 VirtualHost 설정의 마지막 부분에 JkMountFile conf/uri.properties 구문을 추가한다. 참고로 SSL 설정 예는 conf/extra/httpd-ssl.conf 파일에 나와 있다. # Virtual Hosts # # Required modules: mod_log_config # If you want to maintain multiple domains/hostnames on your # machine you can setup VirtualHost containers for them. Most configurations # use only name-based virtual hosts so the server doesn't need to worry about # IP addresses. This is indicated by the asterisks in the directives below. # # Please see the documentation at # <URL:http://httpd.apache.org/docs/2.4/vhosts/> # for further details before you try to setup virtual hosts. # # You may use the command line option '-S' to verify your virtual host # configuration. # # VirtualHost example: # Almost any Apache directive may go into a VirtualHost container. # The first VirtualHost section is used for all requests that do not # match a ServerName or ServerAlias in any block. # <VirtualHost *:80> ServerAdmin webmaster@some.net DocumentRoot "/usr/local/apache-tomcat-8.5.24/webapps/ROOT" ServerName some.net ServerAlias www.some.net ErrorLog "logs/some.net-error_log" CustomLog "logs/some.net-access_log" common JkMountFile conf/uri.properties </VirtualHost> <VirtualHost *:443> ServerAdmin webmaster@some.net DocumentRoot "/usr/local/apache-tomcat-8.5.24/webapps/ROOT" ServerName some.net ServerAlias www.some.net ErrorLog "logs/some.net-ssl-error_log" CustomLog "logs/some.net-ssl-access_log" common SSLEngine on SSLCertificateFile /etc/pki/tls/private/some.net_20180107B19T.crt.pem SSLCertificateKeyFile /etc/pki/tls/private/some.net_20180107B19T.key.pem SSLCertificateChainFile /etc/pki/tls/certs/chain-bundle.pem SSLCACertificateFile /etc/pki/tls/certs/AddTrustExternalCARoot.crt <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory "/usr/local/apache2/cgi-bin"> SSLOptions +StdEnvVars </Directory> BrowserMatch "MSIE [2-5]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog "/usr/local/apache2/logs/ssl_request_log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" JkMountFile conf/uri.properties </VirtualHost> Apache 와 Tomcat 을 mod_jk 모듈로 연동할 때 mod_jk.conf 에서 JkMountFile 설정을 사용하여 각각의 서버에서 담당할 URI 패턴을 지정하는데, VirtualHost 설정 구문에서도 각각의 서버에서 담당할 URI 패턴을 지정해 주어야 한다는 점이 포인트이다. 그렇게 해주어야 jsp 파일을 톰캣에서 처리해주게 된다.
하나의 아파치 웹 서버에서 여러 대의 톰캣을 연동할 경우 톰캣 별로 워커명을 지정하여 포트와 IP 를 설정하고 각 uri.properties 파일을 만들어서 호스트 별로 VirtualHost 에서 JkMountFile 에 각 매핑 파일을 지정해 줄 수 있다.
uri.properties 파일에서 worker 를 지정하기 때문에 여러 대의 톰캣을 연동할 수 있다.
(환경) 아파치 : httpd-2.4.29 mod_jk : tomcat-connectors-1.2.42 톰캣 : apache-tomcat-8.5.24
[참조한 웹 페이지] http://tomcat.apache.org/connectors-doc/reference/uriworkermap.html https://www.lesstif.com/pages/viewpage.action?pageId=12943367 http://truepia.tistory.com/276 The Apache Tomcat Connectors - Reference Guide (1.2.49) - uriworkermap.properties configuration | |||||||
로그인 | Language : |