В настоящее время я пытаюсь внедрить систему 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, основные шаги для достижения этого:
Настройте сайт на прокси-сервер всех запросов на новый хост. Это можно сделать через графический интерфейс, или вы можете использовать этот файл 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 сломаны, и в этом случае вам также придется настроить исходящую перезапись, но это зависит от вашей серверной части, и правила относятся к проблемам, которые могут у вас возникнуть, поэтому посмотри, как ты идешь. Возможно, вам придется сделать еще дюжину настроек (или больше), чтобы все получилось правильно.