Apache субдомен прокси на виртуальном хосте

Прежде всего, я использую apache в качестве HTTP-сервера для приложения, которое работает на другом порту компьютера.

<VirtualHost *:80>
  ProxyPreserveHost On
  ServerName domain.com
  ServerAlias *.domain.com
  ProxyPass  /excluded !
  ProxyPass / http://127.0.0.1:9000/
  ProxyPassReverse / http://127.0.0.1:9000/
</VirtualHost>

Приложение распознает следующий URL: domain.com/accounts/profile, но я хочу использовать account.domain.com/profile

Если я использую другой VirtualHost с ProxyPass для добавления субдомена, приложение не будет работать, потому что приложение понимает маршрут / учетные записи / профиль, только если я сделаю это:

<VirtualHost *:80>
  ProxyPreserveHost On
  ServerName accounts.domain.com
  ProxyPass  /excluded !
  ProxyPass / http://127.0.0.1:9000/accounts/
  ProxyPassReverse / http://127.0.0.1:9000/accounts/
</VirtualHost>

и перейдите по адресу account.domain.com/profile, приложение будет занимать только / profile /. Могу ли я добиться этого путем дальнейшей настройки VirtualHost и прокси-серверов?

Я также читал в других местах, которые, возможно, используя переписывание, я мог бы это исправить, очень похоже на то, как работают файлы.httaccess. Я пытался это с чем-то вроде этого

<VirtualHost *:80>
  ProxyPreserveHost On
  ServerName domain.com
  ServerAlias *.domain.com
  ProxyPass  /excluded !
  ProxyPass / http://127.0.0.1:9000/
  ProxyPassReverse / http://127.0.0.1:9000/
  RewriteEngine On
  RewriteCond %{HTTP_HOST}    ^accounts\.domain\.com$ [NC]
  RewriteRule "^/(.*)$"  "http://domain.com/accounts/$1"  [P]
</VirtualHost>

и в итоге я получил ошибку 502 Proxy

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

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

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

Кроме того, при попытке использовать ErrorDocument для обработки запроса произошла ошибка 502 Bad Gateway.

Любые советы о том, как заставить это работать? Я впервые использую Apache для чего-то другого, кроме хостинга php-сетей и моего.httaccess до того, как он был очень простым.

РЕДАКТИРОВАТЬ: Спасибо Simon в комментариях за указание на мою ошибку, я не могу прокси-имя ServerName. Я чувствую себя действительно глупо сейчас.

0 ответов

Другие вопросы по тегам