6

Итак, у меня есть следующие две конфигурации:

С одной стороны, внутренний сервер:

<VirtualHost *:80>
  ProxyPreserveHost On
  ServerName localhost
  ProxyPass /backend http://some_remote_ip:7000/backend
  ProxyPassReverse /backend http://some_remote_ip:7000/backend
  ProxyPassReverseCookiePath / /backend
  ProxyPassReverseCookieDomain some_remote_ip localhost
</VirtualHost>

И с другой стороны, интерфейсный сервер:

<VirtualHost *:80>
  ProxyPreserveHost On
  ServerName localhost
  ProxyPass  /excluded !
  ProxyPass / http://127.0.0.1:9000/
  ProxyPassReverse / http://127.0.0.1:9000/
</VirtualHost>

Если я соберу их в файл .conf вместе, будет работать только тот, который написан первым в файле, так что технически они оба верны.

Итак, мой вопрос: как я могу иметь несколько записей ProxyPass в одной и той же конфигурации VirtualHost ?

PS: мне нужно иметь возможность получить доступ

  • бэкэнд в localhost/backend
  • внешний интерфейс на localhost

1 ответ1

6

Проблема в том, что у вас есть несколько разделов VirtualHost для одного и того же виртуального хоста (localhost), поэтому Apache просто выберет один. Если вы хотите, чтобы эти конфигурации работали вместе, вы должны поместить директивы ProxyPass в одну конфигурацию VirtualHost:

<VirtualHost *:80>
  ProxyPreserveHost On
  ServerName localhost

  ProxyPass /backend http://some_remote_ip:7000/backend
  ProxyPassReverse /backend http://some_remote_ip:7000/backend
  ProxyPassReverseCookiePath / /backend
  ProxyPassReverseCookieDomain some_remote_ip localhost

  ProxyPass  /excluded !
  ProxyPass / http://127.0.0.1:9000/
  ProxyPassReverse / http://127.0.0.1:9000/
</VirtualHost>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .