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 애플리케이션 이름을 딴 디렉토리를 다시 작성할 수 있었습니다. 이 예에서는 context
Apache 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>