티스토리 뷰

Apache_Tomcat_연동설정.zip



나는 Apache 와 Tomcat 을 연동한 뒤 SSL 을 적용하였다. 


그리고 http로 접근되면 자동으로 https로 넘어가도록 설정하였다. 


이렇게 설정하고 다시 보니 기존의 설정에서 불필요해진 설정들이 많이 생겨서 정리한다.


먼저 Apache24/conf/httpd.conf 파일을 열어서 ServerAdmin, ServerName 을 주석처리했다.


그리고 DocumentRoot 와 <Directory "C:/Program Files/Apache Software Foundation/Tomcat 7.0/webapps/simanager"> 도 모두 주석처리 했다.


왜냐하면 어차피 http로 붙으면 https로 자동으로 넘길테니 http접속에 대한 셋팅은 불필요해졌기 때문이다.


그리고 WEB-INF 폴더로의 접근을 막기 위한 셋팅을 추가한다.

(어디에 추가하든 상관 없다. 난 httpd.conf 파일의 맨 아래에 추가했다.)


<Directory "C:/Program Files/Apache Software Foundation/Tomcat 7.0/webapps/simanager/WEB-INF">

Order deny,allow

Deny from all

</Directory>


여기서 경로는 "C:/Program Files/Apache Software Foundation/Tomcat 7.0/webapps/*/WEB-INF" 로 설정하면 당연히 모든 웹 어플리케이션의 WEB-INF 폴더로 접근이 불가능해진다. 이 정도는 뭐 센스로 당연히 알아야겠지???


그 다음 mod_jk.conf 파일을 수정한다. 다른 것은 건드리지 않고 JkMount 부분을 삭제했다.


어차피 모든 통신은 SSL통신(https)에서 이뤄질 것이기 때문에 Apache24/conf/extra/httpd-ssl.conf 파일에 셋팅하면 된다.


자 말이 나온 김에 Apache24/conf/extra/httpd-ssl.conf 파일을 열어서 수정한다.


<VirtualHost *:443> 과 </VirtualHost> 사이에 다음의 설정을 추가한다.

JkMount /* ajp13

SetEnvIf Request_URI "/*.css" no-jk

SetEnvIf Request_URI "/*.jpg" no-jk

SetEnvIf Request_URI "/*.gif" no-jk

SetEnvIf Request_URI "/*.png" no-jk

SetEnvIf Request_URI "/*.html" no-jk

SetEnvIf Request_URI "/*.js" no-jk


이 셋팅의 의미는 주소창에 보여지는 컨텍스트 하위의 모든 것을 ajp13이라는 worker에 할당한다는 뜻이다.


즉, www.test.com/abc 와 같은 형태의 서블릿 맵핑을 mod_jk 를 통하여 톰캣에서 처리하겠다는 것이다.


만약 .do 형태로 이뤄진 어플리케이션이라면 JkMount /*.do ajp13 이렇게 셋팅하면 된다.


그리고 그 밑에 SetEnvIf 부분은 톰캣이 아닌 아파치에서 처리하고자 하는 파일의 형태를 지정한 것이다.


apache와 tomcat을 따로 설치하고 연동하는 이유가 바로 여기에 있다.


apache는 웹 서버이기 때문에 간단한 파일과 이미지만 처리하고 서버에서 처리하는 어플리케이션은 Tomcat에 넘겨서 처리하겠다는 것이다.


이렇게 해놓고 보니 이제 좀 알겠더라...


그리고 tomcat에서 server.xml 에 context를 설정해야 하는데 내가 여기서 이걸 제대로 안 해서 하루를 날려먹었다 ㅠㅠ


일단 8080 포트는 어차피 사용하지 않으니 설정을 막았다. 뭔 말이냐하면...


<!--<Connector port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" />-->

이렇게 주석으로 막았다는 뜻이다.


그리고 다음 context를 설정해야 하는데 어디다 하냐면


<Host name="localhost"  appBase="webapps"

            unpackWARs="true" autoDeploy="true">

이거 바로 아래에 추가하면 된다. 내가 추가한 것을 여기에 넣는다.


<Context path="" docBase="C:/Program Files/Apache Software Foundation/Tomcat 7.0/webapps/simanager" debug="0" privileged="true"

              reloadable="true" crossContext="true" workDir="C:/Program Files/Apache Software Foundation/Tomcat 7.0/webapps/simanager/work" >

        </Context>


내가 어제 하루 종일 삽질했던 이유...정확하게 어떤 현상이었냐 하면 브라우저에서 주소를 치고 접속하면...


C:/Program Files/Apache Software Foundation/Tomcat 7.0/webapps/simanager 경로에 있는 파일과 폴더의 목록이 보였다 ㅡ.ㅡ;


마치 ftp를 보는 것 같았다...젠장...


어제는 내가 context 를 설정하면서 docBase에다가 webapps/simanager 로 했었다. 


왜 그랬냐하면...멍청이 같지만....

<Host name="localhost"  appBase="webapps"

            unpackWARs="true" autoDeploy="true">


여기에 보니 appBase가 webapps로 되어있길래....난 webapps/simanager 이렇게만 하면 되는 줄 알았다...멍충이...ㅡ.ㅡ^


아무튼 적용 끝!


혹시 몰라서 설정한 파일들을 첨부해 놓아야지...그래야 나중에 또 써먹지 크크크크

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함