Как перенаправить URL с портом на URL с контекстом?

#apache #apache2

#apache #apache2

Вопрос:

У меня установлен сервер с apache (2.4.18)

Я установил на сервере несколько приложений, таких как Grafana, Sonarqube и MySQL enterprise monitor (MEM)

У каждого приложения есть URL, подобный этому

 http://test.com:9000

http://test.com:3000
  

Я ищу решение, которое позволит мне перенаправить этот URL с портом на URL с контекстом, что-то вроде этого

 http://test.com:9000  --> http://test.com/sonar

http://test.com:3000 --> http://test.com/grafana
  

Я добавил некоторый код в файл /etc/apache2/sites-enabled/000-default.conf по умолчанию

 Redirect permanent /sonar http://test.com:9000

Redirect permanent /grafana http://test.com:3000
  

но когда я ввожу http://test.com/sonar в веб-браузере, он перенаправляет только на http://test.com:9000 URL

Я хочу, http://test.com/sonar чтобы этот URL сохранялся в веб-браузере

Ответ №1:

Если вы используете Redirect permanent , сервер отправит 301 ответ обратно клиенту (вместе с новым Location ). Это приведет к тому, что браузер отправит новый запрос, на этот раз в новое местоположение, а также новое местоположение будет показано в адресной строке браузера. Что вам нужно, так это обратный прокси. Для этого вам нужно убедиться, что mod_proxy включен в вашей конфигурации apache (обычно он включен по умолчанию), и поместить что-то вроде этого в ваш .conf файл:

 ProxyPreserveHost On
ProxyPass        /sonar   http://127.0.0.1:9000
ProxyPassReverse /sonar   http://127.0.0.1:9000
ProxyPass        /grafana http://127.0.0.1:3000
ProxyPassReverse /grafana http://127.0.0.1:3000
  

Вероятно, вам также придется уведомить свои приложения о том, что они выполняются в некорневом контексте (путем внесения некоторых изменений в конфигурацию):

http://docs.grafana.org/installation/behind_proxy/

https://docs.sonarqube.org/latest/setup/install-server/

Комментарии:

1. Привет, я пробовал это, но получаю пустую страницу в контексте / sonar

Ответ №2:

Вам нужно прокси-запросы, а не перенаправлять их. Используйте директиву ProxyPass, как указано в официальной документации apache proxy

Например, добавьте этот блок location в свою конфигурацию:

 <Location "/sonar">
    ProxyPass "http://test.com:9000"
</Location>
  

Комментарии:

1. Привет, я пробовал это, но получаю пустую страницу в контексте / sonar

2. Проверьте, правильно ли настроена конфигурация вашего sonar для приема прокси-запросов.