В дополнение к Apache по умолчанию на AWS EC2 Linux я установил Tomcat 8 и развернул на нем веб-сервис.
Текущий URL (который работает) —http://example.com:8080/MyService/api/generatePath
Я хочу сделать это короче с помощью поддомена api.mydomain.com, чтобы можно было использовать этот URL:http://api.example.com/generatePath.
Вот что я сделал на /etc/httpd/conf/httpd.conf
, но это не работает:
<VirtualHost *:80>
ServerName api.example.com
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://localhost:8080/MyService/api
ProxyPassReverse / http://localhost:8080/MyService/api
</VirtualHost>
решение1
Во-первых, вы включили mod proxy на apache? Во-вторых, попробуйте удалить ProxyPreserveHost On
Кроме того, убедитесь, что порт открыт; самый простой способ проверить — зайти на сайтhttp://www.yougetsignal.com/tools/open-ports/(Введите адрес веб-сайта и порт 80)
Надеюсь это поможет
решение2
(1) Чтобы удалить /MyService/
часть вашего URL, переименуйте ваш MyService.war
файл в ROOT.war
и скопируйте его в папку webapps с помощью sudo cp
. Обычно ваша установка tomcat должна автоматически генерировать каталог ROOT в той же папке.
(2) Чтобы удалить :8080, зайдите на сайт через :80, который не указан в строке URL, используя httpd.conf
указанную вами установку. Отредактируйте следующие две вещи, чтобы они выглядели так.
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
<VirtualHost *:80>
ServerName api.example.com
ProxyRequests On
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
<Location "/">
Order allow,deny
Allow from all
</Location>
</VirtualHost>