Назад | Перейти на главную страницу

Как ограничить директиву Apache Location определенным поддоменом?

На нашем сервере www.example.com, мы используем <Location> директива для прокси-трафика на внутренний сервер:

<Location /app1>
  ProxyPass http://192.168.1.20
</Location>

Затем мы добавили поддомен uat.example.com который указывает на тот же IP-адрес www.example.com. Мы хотим использовать его в качестве прокси для клиента для тестирования разрабатываемого приложения. Надеюсь, клиент может получить доступ через:

http://uat.example.com/app2_uat

Теперь, если мы добавим Location:

<Location /app2_uat>
  ProxyPass http://192.168.1.30
</Location>

Клиент может получить доступ к обоим:

http://www.example.com/app2_uat
http://uat.example.com/app2_uat

Как я могу ограничить Location так, чтобы только:

http://uat.example.com/app2_uat

Доступно? (т.е. http://www.example.com/app2_uat не должны быть доступны.)

Это легко сделать, если использовать NameVirtualHost вариант в Apache. у меня есть подробный ответ для другого пользователя здесь. Основная идея состоит в том, что вы создадите два разных VirtualHost конфиги для каждого поддомена. Как только вы это сделаете, вы сможете настроить конфигурацию обоих поддоменов и достичь требуемой детализации.

РЕДАКТИРОВАТЬ: Добавление подробностей о том, как настроить NameVirtualHost для оригинальных плакатов конкретные детали вопроса:

В общем, вам нужно сначала активировать NameVirtualHost для нужного порта. Я предполагаю, что вы будете использовать порт 80, поэтому найдите эту строку в своей конфигурации Apache - она ​​может быть в /etc/apache2/ports.conf- & установить так:

NameVirtualHost *:80

Убедитесь, что ваша конфигурация Apache - шансы те же /etc/apache2/ports.conf как указано выше - для списка установлен порт 80. Что и должно быть, но добавляем здесь для справки:

Listen 80

Здесь происходит волшебство. Опять же, я просто делаю самые простые основы, поэтому подстраивайтесь под любые настройки вашего сервера. Это для www.example.com:

<VirtualHost *:80>
  ServerName www.example.com
  ServerAlias www.example.com

  <Location /app1>
    ProxyPass http://192.168.1.20
  </Location>

</VirtualHost>

А теперь для uat.example.com создайте новую конфигурацию так:

<VirtualHost *:80>
  ServerName uat.example.com
  ServerAlias uat.example.com

  <Location /app2_uat>
    ProxyPass http://192.168.1.30
  </Location>

</VirtualHost>

Используя NameVirtualHost вы можете настроить две отдельные конфигурации домена, привязанные к одному IP-адресу. Опять же, для получения более подробной информации просмотрите ответ, на который я указал выше.