Прокси Apache неправильный URL браузера

Я использую следующее 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 многократно, но это ничего не изменило.

0
задан 27 September 2015 в 02:50
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 моему Tomcat на порт 8080, не указывая на конкретный каталог.

Затем я добавил это в /etc/tomcat7/server.xml :

<Host name="api.mydomain.com" appBase="webapps">
    <Context path="" docBase="webservice" />
</Host>

Поскольку ProxyPreserveHost активирован на моем виртуальном хосте Apache, Tomcat получает имя хоста исходного запроса и может сам решать, какой контент доставить.

С appBase = "webapps" кажется, что контент доставляется из корневого каталога, даже если он находится где-то в другом месте.

0
ответ дан 24 November 2019 в 08:01

Я не знаю Если я правильно понимаю вашу проблему, но если вы не хотите использовать веб-сервис в вашем 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>

Или вы хотите запустить свой веб-сервис в этом домене? И вам не нужно перенаправление?

0
ответ дан 24 November 2019 в 08:01

Теги

Похожие вопросы