RHEL 5.0의 Apache에서 Tomcat 웹 애플리케이션을 가상으로 호스팅 [닫음]

RHEL 5.0의 Apache에서 Tomcat 웹 애플리케이션을 가상으로 호스팅 [닫음]

호스팅 문제를 해결하고 있어요! 공유, 상호 작용 등을 허용하는 조직용 웹 애플리케이션을 개발했습니다. LAN에 배포하고 싶습니다. 하지만...

최종 사용자가 다음을 입력하는 것을 원하지 않습니다.10.21.34.56:8080/webapp

대신에 다음을 입력 http://www.webapp.com 하고 인트라넷의 로컬 DNS가 해당 IP를 확인하도록 하길 바랍니다.

조금은 할 수 있어요... 성공했어요: "www.webapp.com:8080".

8080을 입력하고 싶지 않습니다.

나는 이것을 할 방법을 찾았지만. 나는 완전히 만족하지 않습니다.

브라우저는 기본적으로 모든 http 요청을 포트 80으로 보냅니다. 그래서 저는 서버에서 iptables를 사용하고 요청을 포트 8080으로 리디렉션하고 있습니다. 발견할 가치가 없어 보였습니다.

그래서 apache-tomcat의 가상 호스팅에 대해 들었고 그것이 해결책이라고 말했습니다.

빛을 보게 해주세요!

답변1

내가 이해한 바로는, 당신은 포트 80의 Apache에서 포트 8080에서 실행되는 Tomcat 응용 프로그램 서버로 포트 리디렉션을 요청하는 동시에 Apache가 http 헤더의 포트를 차단하도록 하여 사용자가 포트에 명시적으로 포트를 입력할 필요가 없도록 합니다. 찾아보기 URL 번호. 이를 위해서는 동일한 호스트에서 실행되는 Apache와 Tomcat 애플리케이션 서버 간의 애플리케이션 브리지가 필요합니다. 호스트 시스템에서 Apache 가상 호스트를 호스팅한다고 가정하면 dns애플리케이션이 CNAME호스트 시스템을 가리키도록 구성해야 합니다 .

여러 가지 방법으로 이 작업을 수행할 수 있습니다. 특별한 순서가 없는 이러한 방법 중 하나(그러나 설정이 상대적으로 쉬울 수 있음)

  • mod_rewrite 및 mod_proxy Apache 모듈. 설정이 쉽습니다. httpd 구성만 관련됩니다. 가상 호스트로 전송된 http 트래픽을 포트 80의 tomcat http 서버로 다시 쓰는 프록시 역할만 수행합니다. 지금까지는 관리적 관점에서 볼 때 이것이 매우 깔끔하고 단순하다고 생각합니다. server.xml 파일 업데이트는 Tomcat 설치를 담당하는 개발자/응용 프로그램 관리자에게 맡기겠습니다.

    인용하다:http://tomcat.apache.org/tomcat-5.5-doc/proxy-howto.html 예:

    <VirtualHost *:80>
    ServerName yourapp.yourdomain.com
    ServerAlias yourapp.*        
    ProxyRequests Off
    ProxyPreserveHost On     
    <Proxy *>
    Order deny,allow
    Allow from all
    </Proxy>     
    ProxyPass /webapp http://localhost:8080/webapp
    ProxyPassReverse /webapp http://localhost:8080/webapp    
    <Location /webapp>
      Order allow,deny
      Allow from all
    </Location>        
    </VirtualHost>
    
  • Apache를 통해 JSP를 실행하려면 mod_jk2 모듈을 사용하십시오. 중간 정도의 단단함. httpd 구성에 복잡한 매개변수 설정을 포함하면 동일한 가상 호스트가 Tomcat 서버에 트래픽을 전달하는 대신 다른 스크립트(예: php/perl/cgi)를 실행해야 하는 경우 유용합니다. 이 링크에는 좋은 HOWTO가 있습니다.

    인용하다:

    http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html

    http://people.apache.org/~mturk/docs/article/ftwai.html

    http://www.mulesoft.com/apache-tomcat-mod-jk-connector-configuration

  • Apache mod_proxy_ajp 모듈을 통해 JSP 실행: 위 방법과 비슷하지만 일관성을 위해 이 모듈은 http 통신 대신 ajp 프로토콜을 사용하여 tomcat과 통신합니다.

    인용하다:

    https://confluence.sakaiproject.org/display/~steve.swinsburg/Fronting+Tomcat+with+Apache+via+mod_proxy_ajp

  • 호스트의 네트워크 계층에서 이 문제를 해결하십시오. iptables포트 80에서 들어오는 모든 트래픽을 포트 8080에 대한 기본 바인딩으로 리디렉션하는 데 사용됩니다 . iptables 설정을 이해하고 관리하는 방법을 다룹니다. 일회성 설정이지만 유지 관리가 어렵습니다. virtualhosts동일한 시스템에서 다른 Apache를 호스팅 해야 하는 경우 문제가 발생할 수 있습니다.

예:

iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -A OUTPUT -d localhost -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A OUTPUT -d $(/bin/hostname) -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -A PREROUTING -d $(/bin/hostname) -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables-save

답변2

DNS는 호스트 이름을 IP 주소와 연결합니다. 특정 포트에 대해서는 아무것도 모릅니다. URL에 포트를 지정하지 않으면 브라우저는 포트 80에서 DNS가 반환한 IP 주소에 접속합니다. iptables를 사용하여 포트 80을 포트 8080으로 리디렉션하는 것이 올바른 해결 방법입니다.

관련 정보