Я использую следующие VirtualHost
и mod_proxy для проксирования всех запросов моего поддомена api на мой веб-сервис Java, расположенный по адресу webapps/webservice
на моем Tomcat.
<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», и я получаю ошибку 404, потому что «webservicewebservice» недоступен.
Кто-нибудь знает, что делать?
Решение: Хотя я пробовал это решение раньше, Стоуни был прав! В моем случае проблема заключалась в том, что, даже если я ничего не менял, мне пришлось перезапустить Tomcat, чтобы он заработал. Я несколько раз перезапускал Apache, но это ничего не меняло.
После некоторого тестирования и множества ошибок я, наконец, пришел к следующему решению.
Я настроил свой виртуальный хост 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
на мой Tomcat на порт 8080, не указывая на конкретный каталог.
Затем я добавил это в /etc/tomcat7/server.xml
:
<Host name="api.mydomain.com" appBase="webapps">
<Context path="" docBase="webservice" />
</Host>
Так как ProxyPreserveHost
активирован на моем виртуальном хосте Apache Tomcat получает имя хоста исходного запроса и может сам решить, какой контент доставить.
С участием appBase="webapps"
кажется, что контент доставляется из корневого каталога, даже если он находится в другом месте.
Не знаю, правильно ли я понимаю вашу проблему, но если вы не хотите 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>
Или вы хотите запустить свой веб-сервис в этом домене? И вы не хотите перенаправления?