VirtualHost
내 'api' 하위 도메인에 대한 모든 요청을 webapps/webservice
Tomcat에 있는 Java 웹 서비스로 프록시하기 위해 다음과 mod_proxy를 사용하고 있습니다 .
<VirtualHost *:80>
ServerName api.mydoamin.com
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /webservice http://localhost:8080
ProxPassReverse / http://localhost:8080
</VirtualHost>
내 문제는 'api.mydomain.com'을 입력하면 'api.mydomain.com/webservice'로 리디렉션되고 "webservicewebservice"를 사용할 수 없기 때문에 404 오류가 발생한다는 것입니다.
무엇을 해야할지 아는 사람 있나요?
해결책: 이전에 이 솔루션을 시도해 보았지만 Stony가 옳았습니다! 내 경우의 문제는 아무것도 변경하지 않았더라도 Tomcat을 다시 시작해야 작동한다는 것입니다. Apache를 여러 번 다시 시작했지만 아무 것도 변경되지 않았습니다.
답변1
귀하의 문제를 올바르게 이해했는지는 모르겠지만 webservice
귀하의 URL에 해당 내용을 원하지 않는 경우. 그런 다음 프록시 패스를 /
.
<VirtualHost *::80>
ServerName api.mydoamin.com
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://localhost:8080/webservice/
ProxPassReverse / http://localhost:8080/webservice/
</VirtualHost>
아니면 해당 도메인에서 웹 서비스를 실행하시겠습니까? 그리고 리디렉션을 원하지 않나요?
답변2
몇 가지 테스트와 많은 오류 끝에 마침내 다음과 같은 해결책을 찾았습니다.
다음과 같이 Apache 가상 호스트를 설정했습니다.
<VirtualHost *:80>
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny, allow
Allow from all
</Proxy>
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
ServerName api.mydomain.com
</VirtualHost>
api.mydomain.com
이제는 특정 디렉토리를 가리키지 않고 포트 8080에서 Tomcat에 대한 모든 요청을 프록시합니다 .
그런 다음 이것을 다음에 추가했습니다 /etc/tomcat7/server.xml
.
<Host name="api.mydomain.com" appBase="webapps">
<Context path="" docBase="webservice" />
</Host>
내 Apache 가상 호스트에서 활성화 되면 ProxyPreserveHost
Tomcat은 원래 요청의 호스트 이름을 가져오고 어떤 콘텐츠를 전달할지 스스로 결정할 수 있습니다.
appBase="webapps"
콘텐츠가 다른 곳에 있더라도 루트 디렉터리에서 전달되는 것처럼 보입니다 .