개발 블로그

[교육] 하나의 엔진에 두개의 도메인 본문

리눅스 | 서버

[교육] 하나의 엔진에 두개의 도메인

토도 2024. 9. 25. 20:46

 

하나의 엔진에 두개의 도메인(test.co.kr, abc.co.kr)

  1. test.co.kr과 abc.co.kr 서로 다른 소스 연결
  2. 둘다 context path = "/" 여야 함
  3. 동일 upload 가상 폴더 연결
  4. 도메인단위로 다른 로그 지정
  5. get/post 한글처리
  6. jndi 연결

 

일단 나는 이미 첫번째 과제를 완료한 후 vm을 그대로 복사해서 그 위에 만들었다

막 기본 설정 다시 설치하기 귀찮아

 

 

webapps 디렉토리 내에 두 개의 애플리케이션을 만든다

  • <TOMCAT_HOME>/webapps/test
  • <TOMCAT_HOME>/webapps/abc

 

그리고 연결될 각각의 폴더 안에 index.jsp를 만들어줬슴다

 

vi /etc/hosts

 

 

도메인 두개를 로컬 호스트와 연결해준다

 

vi /engine/apache/conf/httpd.conf

 

ServerName 이 이전에 했던 설정 그대로 

 

ServerName www.milk.com:80 이렇게 되어 있는데

이 도메인은 더 이상 사용하지 않을 것이니 지워주고  localhost:80 설정해준다 

 

톰캣과의 연결을 위해서 ..

 

VirtualHost 설정 풀려져있는지 확인

 

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_http_module modules/mod_proxy_http.so

 

주석 풀어주고 아래의 것도 추가해주기 

 

#mod_jk.so 모듈의 위치
LoadModule jk_module /usr/lib64/httpd/modules/mod_jk.so

#workers.properties 설정 파일 위치
JkWorkersFile /engine/apache/conf/workers.properties

#mod_jk log 위치
JkLogFile /engine/apache/logs/mod_jk.log

#Load balancing workers will not function properly 오류 대응
JkShmFile /engine/apache/logs/mod_jk.shm

 

이제 방금 주석을 풀었던 파일을 수정하겠슴둥

 

vi /engine/apache/conf/extra/httpd-vhosts.conf

 

<VirtualHost *:80>
   ServerName test.co.kr
   ServerAlias www.test.co.kr
   # Document root 설정 (Tomcat으로 프록시 연결할 때는 필요 없음)
   DocumentRoot "/engine/apache2.4/htdocs"

       # 80번 포트 요청을 Tomcat의 8080 포트로 프록시
   ProxyPass / http://test.co.kr:8080/
   ProxyPassReverse / http://localhost:8080/

   # Tomcat으로 요청을 전달
   JkMount /* worker1
</VirtualHost>

<VirtualHost *:80>
   ServerName abc.co.kr
   ServerAlias www.abc.co.kr
   # Document root 설정 (Tomcat으로 프록시 연결할 때는 필요 없음)
   DocumentRoot "/engine/apache2.4/htdocs"

      # 80번 포트 요청을 Tomcat의 8080 포트로 프록시
   ProxyPass / http://abc.co.kr:8080/
   ProxyPassReverse / http://localhost:8080/

   # Tomcat으로 요청을 전달
   JkMount /* worker1
</VirtualHost>

 

여기에 첨에 ProxyPass / http://각각의 도메인.co.kr:8080/

으로 설정해주는게 중요하다

첨엔 ProxyPass / http://localhost.co.kr:8080/ 

로 했다 두 사이트로 들어가도 계속 고양이만 나와서 짜증났음

 

httpd.conf에서 설정했던 위치에 workers.properties 도 설정 되어있는지 확인하고

 

이제는 tomcat의 server.xml을 설정해준다 

 

원래 설정 되어있던 milk.com의 Host 설정은 지워주고 

 

<Host name="test.co.kr" appBase="webapps" unpackWARs="true" autoDeploy="true">
    <Context path="/" docBase="/engine/tomcat/webapps/test">
    <!-- 가상 폴더 설정: /upload -->
    <Resources>
       <PreResources className="org.apache.catalina.webresources.DirResourceSet"
        base="/upload" webAppMount="/upload" />
    </Resources>
    <Valve className="org.apache.catalina.valves.AccessLogValve"
           directory="/var/log/tomcat/test"
           prefix="test_access_log"
           suffix=".log"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    </Context>
</Host>

<Host name="abc.co.kr" appBase="webapps" unpackWARs="true" autoDeploy="true">
    <Context path="/" docBase="/engine/tomcat/webapps/abc">
    <!-- 가상 폴더 설정: /upload -->
    <Resources>
       <PreResources className="org.apache.catalina.webresources.DirResourceSet"
        base="/upload" webAppMount="/upload" />
    </Resources>
    <Valve className="org.apache.catalina.valves.AccessLogValve"
           directory="/var/log/tomcat/abc"
           prefix="abc_access_log"
           suffix=".log"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    </Context>
</Host>

 

 

 

로그 폴더도 만들어졌구요

 

이제는 JNDI 설정을 하겠슴

 

vi /engine/tomcat/conf/context.xml

 

 

아니 근데 어이없는게, www.test.co.kr은 은 내가 만든 페이지가 뜨는데

www.abc.co.kr 자동으로 https:// 가 되어서

 

 

알고 보니 

 

server.xml 파일에서 HTTP → HTTPS 리다이렉트를 막기 위해 redirectPort="8443" 속성을 제거하거나, HTTP와 HTTPS를 별도로 처리할 수 있도록 설정합니다.

 

리다이렉트 포트 설정을 지워줬다잉

그니까 정상적으로 뜬다

 

 <Connector protocol="AJP/1.3"
               address="::1"
               port="8009"
               redirectPort="8443" />

 

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"

               redirectPort="8443"
               URIEncoding="UTF-8" />

 

 <Connector protocol="AJP/1.3"
               address="::1"
               port="8009" />

 

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               URIEncoding="UTF-8" />

 

여기의 리다이렉트 포트를 지워주고 브라우저 캐시도 지워주니

저 로봇이 안뜬다 후

 

그리고 URIEncoding="UTF-8" 설정도 잊지 않고 넣어주고

 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Abc</title>
</head>
<body>
    <h1>Hello, Abc</h1>
    <p>안녕하세요 한글이 나옵니다</p>
</body>
</html>

 

jsp도 설정해주면 

 

 

이렇게 뜨고여 가상 폴더 설정한 

 

 

얘도 정상적으로 뜸.. JNDI 설정 테스트는 차차ㅎㅎ