Рейтинг:0

Как настроить Apache в качестве обратного прокси-сервера для контейнера докеров

флаг jp

Я изо всех сил пытаюсь настроить свой сервер Apache в качестве обратного прокси-сервера для содержащегося докера Зеленый свет пример.

В официальном документы предлагается для запуска Greenlight в док-контейнере с экземпляром Nginx в качестве обратного прокси-сервера (в основном, чтобы упростить его запуск вместе с BBB-сервер). Однако в моей настройке я не хочу запускать свой собственный экземпляр BBB, а скорее использую Greenlight в качестве интерфейса для внешнего сервера BBB.

Но для удобства я все же настроил Greenlight в докер-контейнере.

Но поскольку мой сервер имеет много целей (в основном он используется для доставки нескольких веб-сайтов и предоставления учетных записей электронной почты, управляемых Фроклор но работает и как Матричный сервер) Я не хочу настраивать Nginx в качестве прокси-сервера, так как это вынудит меня существенно изменить мою фактическую настройку Apache под управлением Froxlor.

Поэтому я пытался настроить Apache вместо обратного прокси. К сожалению, в документации есть только пример Nginx:

местоположение / б {
  прокси_пароль http://127.0.0.1:5000;
  proxy_set_header Хост $host;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $ схема;
  прокси_http_версия 1.1;
}

местоположение /b/кабель {
  прокси_пароль http://127.0.0.1:5000;
  proxy_set_header Хост $host;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $ схема;
  proxy_set_header Обновить $http_upgrade;
  proxy_set_header Соединение "Обновление";
  прокси_http_версия 1.1;
  proxy_read_timeout 6 часов;
  proxy_send_timeout 6 часов;
  client_body_timeout 6 часов;
  send_timeout 6 часов;
}

Я связал, чтобы это работало на Apache со следующими настройками VirtualHost:

<VirtualHost MYIP:443>
  ServerName greenlight.example.com
ProxyPreserveHost On
ProxyRequests Off
ProxyVia On
ProxyPass / http://127.0.0.1:5000
ProxyPassReverse / http://127.0.0.1:5000   
<Location "/cable">
  ProxyPass / http://127.0.0.1:5000 connectiontimeout=6h timeout=6h
  ProxyPassReverse / http://127.0.0.1:5000
</Location>
</VirtualHost>

Я отклоняюсь от примера, что я не хочу использовать виртуальную подпапку «b», а скорее поддомен, чтобы перенаправить определенный трафик на локальный порт. 5000. К сожалению, это не работает. Сервер возвращается

502 Ошибка прокси

Ошибка прокси

Прокси-сервер получил недопустимый ответ от вышестоящего сервера.
Прокси-сервер не может обработать запрос

Причина: Ошибка чтения с удаленного сервера

Может кто-нибудь объяснить мне, что может быть причиной этой ошибки? Как перевести настройки заголовка Nginx в Apache и другие настройки тайм-аута и нужны ли они вообще?

drookie avatar
флаг za
Так что в основном вы пытаетесь сделать противоположное тому, что сейчас делает индустрия. Веселый.
флаг jp
@drookie Вы имеете в виду переход с Nginx на Apache? Ну, нет, я не. Я просто хочу установить Greenlight на сервер, который запускает много других вещей с Apache, и нет никакого смысла перенастраивать десятки приложений, потому что «индустрии» думают, что Nginx круче.
djdomi avatar
флаг za
нет ты не понял сути. вы должны использовать nginx в качестве кеша и запускать приложения на apache. вот что он хотел сказать. Так что скажите об исходной проблеме, потому что imho у вас [проблема x и y] (https://faq-database.de/doku.php?id=en:x-and-y-problem)
флаг jp
@djdomi Спасибо за комментарий. Может быть ты прав. Я изменил вопрос, пытаясь дать больше информации. Сначала я не хотел быть слишком конкретным…
Рейтинг:2
флаг in

Здесь есть несколько вопросов:

  1. Заказ
    Выигрывает первый совпавший путь. Вы разместили / перед /кабель, так / будет соответствовать всегда и /кабель никогда не будет использоваться.
  2. совпадающие косые черты в конце
    Если вы закончите первый параметр ПроксиПасс с / нужно добавить один ко второму, и наоборот. В противном случае вы получите нерабочие URL-адреса, отправленные на серверную часть.
  3. ProxyPass внутри <Location> блокировать
    Если вы используете ПроксиПасс внутри <Location> он получает только второй параметр. Первый заменяется <Location>.

Пример:

<VirtualHost MYIP:443>
    ServerName greenlight.example.com
    ProxyPreserveHost On
    ProxyRequests Off
    ProxyVia On
    ProxyPass /cable http://127.0.0.1:5000 connectiontimeout=6h timeout=6h
    ProxyPassReverse /cable http://127.0.0.1:5000
    ProxyPass / http://127.0.0.1:5000/
    ProxyPassReverse / http://127.0.0.1:5000/
</VirtualHost>

И последнее, но не менее важное: в настоящее время вы проксируете оба местоположения на один и тот же серверный URL-адрес. Обычно это неправильно.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.