весь трафик, идущий на виртуальный хостинг

I есть приложение, работающее по адресу http: // localhost: 6512 , и определение виртуального хоста следующим образом:

<VirtualHost *:80>
        ServerName ldpmarmotta.example.com
        ProxyPassMatch ^/(.*)$ http://localhost:6512/marmotta/$1
</VirtualHost>

У меня возникают две проблемы с указанным выше определением:

  1. Весь трафик на этот сервер, включая http: // пример. направлен на http: // localhost: 6512
  2. Запрос на ldpmarmotta.example.com направляется на http: // localhost: 6512 . Я не ожидал, что URL-адрес изменится, но ответ на возврат на ldpmarmotta.example.com
0
задан 30 December 2017 в 22:23
1 ответ

Вы говорите: « У меня есть приложение, работающее на http: // localhost: 6512 », но в контексте вашего вопроса (и этого самого ответа ), лучше было бы сказать:

  • Я запускаю демон HTTP, который прослушивает порт 6512; назовем его my_daemon . Обратите внимание, что это не Apache; это другое приложение;

Кроме того, вы говорите: « [...] определение виртуального хоста следующим образом ... », и, опять же, было бы лучше сказать:

  • I ' m также работает под управлением Apache, настроенного для прослушивания порта 80 (и, очевидно, НЕ прослушивания порта 6512) и с одним определенным VirtualHost. В частности, VirtualHost, определенный ниже [....]

Сказав выше (Кстати: я прав? Если нет, пожалуйста, добавьте комментарии), вы говорите, что у вас есть две проблемы.

Что касается первого:

Весь трафик на этот сервер, включая http://example.com , направляется на http: // localhost: 6512

Я бы скажем, что ЕСЛИ имя хоста example.com разрешается в один из IP-адресов хоста, на котором запущен Apache, ТОГДА это ожидаемое поведение как:

  • HTTP-запрос, сгенерированный запуском « http://example.com », получен Apache (поскольку он прослушивает порт 80 соответствующего IP-адреса);
  • , так как есть НЕ явно определенный VirtualHost с ServerName example.com ....
  • ... Apache будет обслуживать запрос через первый определенный VirtualHost. И ...
  • поскольку первый виртуальный хост является «вашим», тогда HTTP-запрос «прокси-сервер» my_daemon и ...
  • как таковой my_daemon получит HTTP-запрос.

Итак Опять же, не вижу проблемы.

Опять же, если я ошибаюсь в некоторых предположениях, пожалуйста, дайте мне знать.


Что касается вашей второй «проблемы», я вижу, что она охватывает два разных момента. Первый:

Запрос на ldpmarmotta.example.com направляется на http: // localhost: 6512

и, опять же, это кажется мне ожидаемым поведением, поскольку это именно то, что вы настроили на своем виртуальном хосте.

Второй момент:

Я был не ожидая, что URL-адрес изменится, но ответ вернется ldpmarmotta.example.com

Я не уверен на 100%, что именно вы пытаетесь описать, но ... если я вытащу свой (пыльный) хрустальный шар, держу пари, у вас возникнут проблемы с ProxyPassing : у вас работает собственный демон HTTP ( my_daemon ), но вы не хотите открывать его напрямую в Интернет. Итак, вы помещаете перед ним стандартный Apache и ... любезно просите Apache выполнять HTTP-запросы ProxyPass в обратном направлении к Интернету и вашему демону. В таком сценарии .... вам просто нужно полагаться на ProxyPass И ProxyPassReverse .

Что-то вроде:

ProxyPass / http://localhost:6512/marmotta/
ProxyPassReverse / http://localhost:6512/marmotta/

(Кстати: вы использовали ProxyPassMatch , но в качестве REGEX вы определили, что он соответствует ... всему, чем он действует точно как стандартный ProxyPass. Поэтому я предлагаю использовать

Что касается ProxyPass / ProxyPassReverse , подробное использование ... в Интернете это буквально FULL из подробный учебник / статьи, так что .... вам будет легко узнать подробности: -)

HTH.

0
ответ дан 5 December 2019 в 06:56

Теги

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