Apache VirtualHost Proxy с подкаталогом

13

В настоящее время в качестве основного веб-сервера используется сервер IIS. Мы внедряем сервер Apache вместо него, но нам все еще нужно иметь доступ к серверу IIS. Как правило, это простая вещь, потому что Apache2 может прокси-сервер субдомена для этого сервера.

Наша проблема, однако, заключается в следующем: мы используем dotnetCharting на сервере IIS, и лицензирование привязано к имени домена. Чтобы заставить работать dotnetCharting, необходимо приобрести еще одну лицензию.

У меня вопрос, может ли Apache2 прокси подкаталог? Например, может ли «www.example.com/subdir» указывать на сервер IIS? Кажется, что это не должно быть невозможно, но я не могу найти решение для этого.

SuperJer
источник

Ответы:

19

Конечно. Но будь осторожен; многие веб-приложения не предназначены для изменения URL-адреса. Используется ли приложение в подкаталоге в настоящее время?

# You'll probably want this to maintain the host mapping in IIS
ProxyPreserveHost On
# Swap in the IP address or internal host name of your IIS server:
ProxyPass /subdir/ http://192.0.2.100/subdir/

Или, если вы изменяете путь URL, помните, что у многих приложений с этим будут проблемы из-за абсолютных путей к ресурсам (CSS, javascript, images):

ProxyPass /subdir/ http://192.0.2.100/
ProxyPassReverse /subdir/ http://192.0.2.100/
Шейн Мэдден
источник
Отлично! Это помогло мне в моей тестовой среде. Прямо сейчас, внутри, вы можете ввести IP-адрес сервера и использовать наш внутренний прокси-сервер для доступа к серверу, и все (кроме dotnetcharting) работает отлично, поэтому я не ожидаю, что приложение завершится ошибкой, когда мы проксируем его этим методом. Очень признателен!
SuperJer
1
Я должен был оставить след /от subdir(как это :) /subdir. Иначе, если domain.com/subdirприводит к ошибке приложения (500). Было бы правильно прокси, если косая черта была включена ( domain.com/subdir/), но это не тот эффект, который я искал.
OneHoopyFrood
3

Конечно.

  1. Включить mod_proxy mod_proxy_http
  2. установите следующую инструкцию в вашем Apache VHost

    ProxyPass /subdir http://iis.server/.../
    ProxyPassReverse /subdir http://iis.server/.../
    

Обратите внимание, окончательный "/" является обязательным.

Для получения дополнительной информации: http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

NCH
источник
0

последний слеш на конце НЕ обязателен. У меня была такая настройка

ProxyPass /dir http://exmpale.com/dir/ 

ProxyPassReverse /dir http://exmpale.com/dir/ 

и верхний уровень работал, но все в подкаталогах ниже основного - нет.

Я изменил это на это, и все работало.

Спасибо за дезинформацию !!!

ProxyPass /dir http://exmpale.com/dir

ProxyPassReverse /dir http://exmpale.com/dir
раздраженный Linux Linux
источник
1
Почему люди понижают это? Это была именно та проблема, которая у меня была. Вы должны либо завершить оба URL-адреса косой чертой, либо оставить оба URL-адреса без косой черты… по крайней мере, мне это помогло, когда дело дошло до подкаталогов;)
Jannik