VirtualHost에는 Tomcat 애플리케이션을 가리키는 모드 재정의가 있습니다.

VirtualHost에는 Tomcat 애플리케이션을 가리키는 모드 재정의가 있습니다.

Ubuntu 14.04에서 실행되는 서버를 설정하고 있습니다. Apache와 Tomcat을 설치하고 Apache의 다시 쓰기 모듈과 mod_jk를 활성화했습니다. Apache가 요청을 애플리케이션 컨텍스트에 올바르게 전달할 수 있도록 mod_jk를 올바르게 구성했습니다. 내 도메인 이름도 서버를 올바르게 가리키고 있으며 이를 탐색할 수 있습니다. 그러나 가상 호스트 파일에 문제가 있습니다. Tomcat에서 실행 중인 응용 프로그램에 대한 도메인을 가리키려고 합니다. 현재 가지고 있는 가상 호스트 파일입니다.

<VirtualHost *:80>
    ServerName www.domain.com
    DocumentRoot /var/www/domain

    RewriteEngine On
    RewriteRule \/$ /context [L]
</VirtualHost>

나는 많은 변형을 시도했지만 운이 없었습니다. 문제를 해결하는 데 도움을 주시면 대단히 감사하겠습니다.

** 갱신**

Tomcat 애플리케이션 이름을 딴 디렉토리를 다시 작성할 수 있었습니다. 이 예에서는 contextApache html 폴더에 있습니다 (/var/www/html/context). 이제 내 가상 호스트 파일은 다음과 같습니다.

<VirtualHost *:80>                                                       
        ServerName www.domain.com                                
        DocumentRoot /var/www/html/context/  

        <Directory />                                                    
                Options FollowSymLinks                                   
                AllowOverride None                                       
                RewriteEngine On                                         
                RewriteRule \/$ /context [L]                                
        </Directory>                                                     

        <Directory /var/www/html/context/>                                  
                Options Indexes FollowSymLinks MultiViews                
                AllowOverride None                                       
                Order allow,deny                                         
                allow from all                                           
        </Directory>                                                    
</VirtualHost> 

이제 문제는 이라는 Tomcat 애플리케이션을 다시 작성하지 않는다는 것입니다 context. 결론적으로:

http://{{ip_address}}/context- 제대로 작동하고 Tomcat 응용 프로그램을 표시합니다.

http://domain.com- 나를 다음으로 리디렉션하는 HTML 콘텐츠/var/www/html/context

재작성 규칙을 강제로 Tomcat 애플리케이션 이름으로 리디렉션하는 방법은 무엇입니까 context? 재정의를 재정의하고 mod_jk와 함께 설치된 애플리케이션에 Apache html 디렉터리의 내용을 표시하지 않을 수 있는 전역 설정이 있습니까?

도움을 주셔서 미리 감사드립니다.

답변1

업데이트 2

   <VirtualHost *:80>
        ServerName www.domain.com
        ServerAlias 10.10.10.10(server's IP) server'sFQDN 
        DocumentRoot /var/www/domain

        RewriteEngine On
        # Rewrite everything after ' / ' to /context/restofURLifany
        RewriteRule ^/(.*)$ /context/$1 [L,QSA,PT]
        # Rewrite ' / ' to /context
        #RewriteRule ^/$ /context [L,PT]
        # Send all '/context' traffic to prod loadbalancer ' prod_lb '
        JkMount /context prod_lb

        # Send all other traffic from root domain ' / ' to prod loadbalancer ' prod_lb '
        JkMount /* prod_lb

    </VirtualHost>

/etc/hosts상단에 다음 줄을 편집 하고 추가합니다.

#IPaddr hostnames
10.10.10.10 serverFQDN hostname www.domain.com

귀하의 문제는 귀하가 사용하는 아파치 도메인 이름이 해당 가상 호스트와 연결되어 있지 않다는 것입니다.

다음에 추가 httpd.conf:NameVirtualHost *:80

고쳐 쓰다

이것이 당신이 원하는 것입니까?

RewriteRule ^/(.*)$ /context/$1 [L,QSA,PT]

mod_jk가 설치되어 있으면 올바른 방향을 찾는 데 도움이 될 것입니다.

가상 호스트 구성에서

<VirtualHost *:80>
    ServerName www.domain.com
    DocumentRoot /var/www/domain

    # Send all traffic from root domain ' / ' to prod loadbalancer ' prod_lb '
    JkMount /* prod_lb

</VirtualHost>

Workers.properties 파일에서

# Define list of workers that will be used for mapping requests
worker.list=prod_lb,status

# Define Tomcat App Node1
# modify the host as your host IP or DNS name.
worker.node1.port=9999 #AJP1.3 port Tomcat listening on
worker.node1.host=127.0.0.1 #Insert FQDN or IP here (I prefer IPs for speed)
worker.node1.type=ajp13
worker.node1.lbfactor=1
worker.node1.cachesize=1
worker.node1.max_packet_size=16384
worker.node1.connect_timeout=10000
worker.node1.prepost_timeout=10000
worker.node1.socket_timeout=5000
worker.node1.socket_keepalive=True
worker.node1.reply_timeout=30000
worker.node1.max_reply_timeouts=3
worker.node1.recovery_options=0
worker.node1.domain=group1
worker.node1.stopped=false

# Load-balancing behavior
worker.prod_lb.type=lb
worker.prod_lb.balance_workers=node1
worker.prod_lb.max_reply_timeouts=10
worker.prod_lb.method=Session
worker.prod_lb.lock=P
worker.prod_lb.sticky_session=1
worker.status.type=status

톰캣 서버.xml

<!-- Define an AJP 1.3 Connector on port -->
<Connector port="9999" address="${jboss.bind.address}" protocol="AJP/1.3" 
   maxThreads="300" connectionTimeout="5000" maxHttpHeaderSize="16384" packetSize="16384" 
   emptySessionPath="true" enableLookups="false" />

<Engine name="jboss.web" defaultHost="localhost" jvmRoute="tomcat_node1">

답변2

가상 호스트 파일을 편집했습니다. 000-default.conf 대신 가상 호스트 파일에 JkMount를 추가했고 Apache가 Apache 웹 디렉터리의 폴더 대신 Tomcat 응용 프로그램에 요청을 전달하도록 할 수 있었습니다. 이제 가상 호스트 파일도 2개 있습니다. 하나는 기본 도메인용이고 다른 하나는 www가 없는 도메인용입니다. 접두사. 두 파일은 다음과 같습니다.

www_domain.conf

<VirtualHost *:80>

        ServerName www.domain.com

        JkMount /context* ajp13_worker

        <Directory />
                Options FollowSymLinks
                AllowOverride None
                RewriteEngine On
                RewriteRule \/$ /context [L]
        </Directory>

</VirtualHost>

도메인 구성 파일

<VirtualHost *:80>
        ServerName domain.com

        RewriteEngine On
        RewriteRule \/$ http://www.domain.com [L] 
</VirtualHost>

관련 정보