환경 : Linux, CentOS7 , Apache, Tomcat 2개
하나의 서버에 다중 톰캣 세팅 되어있는 상황 편의상 톰캣1, 톰캣2로 칭하겠음 포트는 각각 다름 (30000,30001)
문제 : 각각 다른 톰캣에 , 각 다른 도메인을 연결해야한다.
예전에 작성한 아래 게시물의 도메인 연결 부분에 firewall 방화벽 조정으로 80 포트로 들어오는건 무조건 8080 로 포트포워딩 시켜버려서 해결을 했었으나 톰캣을 2개 이상 쓰면서 얘기는 달라졌다.
https://bug41.tistory.com/165?category=954110
예시)
톰캣 1 = site1.com
톰캣 2 = site2.com
톰캣이 다르니 그냥 뒤에 포트번호만 맞게 쳐주면 알아서 잘 들어가짐 (site1.com:3000 , site2.com:30001)
근데 저렇게 서비스하는 사이트가 어딨나?
결론은 , 포트번호 굳이 치지않아도 각 도메인 딱 치면 , 각 맞는 톰캣의 포트에 딱 들어가야한다.
처음에 톰캣한정으로만 redirect 를 어떻게 해야하나, 기존에 redirect 가 https 로 보내주고있는데 저걸 어떻게 해야하나 고민하다가 , 아파치를 같이 써서 해결하면 편하겠다는 생각이 들어서 그대로 이행해봤는데 성공했다.
브라우저에서 웹 도메인을치고 들어가는 기본포트가 80 인점을 이용하였다.
내가 서비스할 서버에서도 site1.com 을 딱 치면 기본포트로 무조건 아파치의 80 을 향하고있다.
아파치의 httpd.conf 에서 proxypass 를 아래와 같이 추가해주면 되겠다.
아파치 httpd.conf
<VirtualHost *:80>
#DocumentRoot /var/www/html
ServerAdmin test@test.com
ServerName site1.com
ServerAlias site1.com
ServerAlias www.site1.com
ProxyRequests off
ProxyPreserveHost On
ProxyPass / http://www.site1.com:30000/
ProxyPassReverse / http://www.site1.com:30000/
</VirtualHost>
<VirtualHost *:80>
#DocumentRoot /var/www/html
ServerAdmin test@test.com
ServerName site2.com
ServerAlias site2.com
ServerAlias www.site2.com
ProxyRequests off
ProxyPreserveHost On
ProxyPass / http://www.site2.com:30001/
ProxyPassReverse / http://www.site2.com:30001/
</VirtualHost>
당연히 톰캣쪽에서도 포트에 맞게 설정이 되어있어야한다. (톰캣2 server.xml 은 생략)
톰캣1 server.xml
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="30000"
protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
<Host name="site1.com" appBase="/home/httpd/site1" unpackWARs="true" autoDeploy="true" >
<Alias>www.site1.com</Alias>
<Alias>site1.com</Alias>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
이렇게 해주면 site1.com 에 접속해도 80 포트를 타고 바로 30000포트로 보내주는식이 되기때문에 굳이 도메인 뒤에 포트를 붙여주지않아도 접속 잘되는걸 확인할수있다.
'IT > 잡다구리' 카테고리의 다른 글
[Linux] sh 실행 오류 $'\r' : command not found (0) | 2022.05.20 |
---|---|
[Github] Jekyll 블로그 형식 메뉴얼 만들기 (1) (0) | 2022.04.26 |
[Linux] Centos8 yum install , yum update 시 failovermethod 오류, No URLs in mirrorlist 오류 (0) | 2022.04.10 |
[tomcat9] 톰캣 cors 이슈 관련 메모 , CORS allow 방법 (0) | 2022.03.24 |
[Linux] 파일 복사 , 심볼릭 링크 메모 (0) | 2022.03.22 |