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

Обратный субдомен прокси в подпапку на IIS7

В настоящее время я пытаюсь внедрить систему Owncloud в нашей компании. У меня есть система Owncloud, работающая на внутреннем веб-сервере, который находится за брандмауэром. Я могу получить доступ к установке изнутри, перейдя в servername.company.co.nz/owncloud

У нас есть общедоступный веб-сервер IIS (SBS 2012). Я бы хотел использовать это как обратный прокси для облачной установки. Я прочитал несколько статей и руководств о том, как добиться этого с помощью переопределения URL-адресов и ARR в IIS - этот, в частности, показался хорошим началом: Обратный прокси-сервер IIS 7 на основе хоста доменного имени?

Но до сих пор мне не удалось создать какие-либо работающие правила обратного прокси.

В принципе, я бы хотел поддомен cloud.company.co.nz для обратного прокси на внутренний путь веб-сервера server.company.co.nz/owncloud не смогли понять, как этого добиться.

В настоящее время у меня есть новый веб-сайт на сервере IIS, который привязан к cloud.company.co.nz hostname, но это почти все, что я смог сделать, не перебивая наши веб-службы Exchange.

Имейте в виду, что я новичок в IIS. На этом этапе любая помощь приветствуется.

Изменить 1:

Согласно предложению @jotap, мой web.config теперь выглядит так. Однако все, что я получаю, - это ошибка 503. Есть идеи относительно того, почему я получил это? Кроме того, где мне искать подсказки в журналах и т. Д.?

Ура

<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="ReverseProxyInboundRule1" enabled="false" stopProcessing="true"> <match url="(.*)" /> <action type="Rewrite" url="http://1.2.3.4/owncloud{R:1}" /> </rule> </rules> <outboundRules> <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1" enabled="false"> <match filterByTags="A, Form, Img" pattern="^http(s)?://1.2.3.4/owncloud/(.*)" /> <action type="Rewrite" value="http{R:1}://cloud.company.co.nz/{R:2}" /> </rule> <preConditions> <preCondition name="ResponseIsHtml1"> <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" /> </preCondition> </preConditions> </outboundRules> </rewrite> </system.webServer> </configuration>

Дьявол кроется в деталях, когда дело доходит до обратного проксирования с IIS и ARR, основные шаги для достижения этого:

  • Установите ARR и URLRewrite
  • Настройте ARR для обратного проксирования: Уровень сервера IIS -> Кэш маршрутизации запросов приложений -> Настройки прокси сервера
    • Самая простая настройка, которая должна вас подтолкнуть, - это «Включить прокси», а все остальное оставить как есть.
  • Настройте сайт на прокси-сервер всех запросов на новый хост. Это можно сделать через графический интерфейс, или вы можете использовать этот файл web.config, чтобы начать работу (поместите его в корень сайта, который выполняет проксирование):

    <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="inbound"> <match url="(.*)" /> <action type="Rewrite" url="http://server.company.co.nz/owncloud/{R:0}" /> </rule> </rules> </rewrite> </system.webServer> </configuration>

Не уверен, что вы знакомы с регулярными выражениями, которые в основном говорят: «захватите URL-адрес после имени хоста и сделайте запрос на server.company.co.nz, прикрепив захваченный URL-адрес в конце подкаталога owncloud. ".

Обратите внимание, что у вас могут возникнуть проблемы, если сайт на бэкэнде сжимает контент (вы получите ошибку 500). Кроме того, если это сработает, вы можете обнаружить, что все ваши изображения и CSS сломаны, и в этом случае вам также придется настроить исходящую перезапись, но это зависит от вашей серверной части, и правила относятся к проблемам, которые могут у вас возникнуть, поэтому посмотри, как ты идешь. Возможно, вам придется сделать еще дюжину настроек (или больше), чтобы все получилось правильно.