2015-04-28 2 views
3

Я пытаюсь настроить обратный прокси-сервер через IIS для обслуживания стороннего файла JavaScript на первом имени хоста. Я установил модуль ARR в IIS и создал правило перезаписи URL, но по какой-то причине он не вступает в силу. Я также перешел в модуль ARR в IIS и обеспечил, чтобы «Enable Proxy» был установлен в разделе «Параметры прокси сервера».Создание обратного прокси-сервера в IIS

По существу я должен отвечать на запросы на моем домене

http://my.local.com/iojs/dyn_wdp.js 

еще на самом деле служат файл из:

https://third.party.com/latest/dyn_wdp.js 

Мой URL правила перезаписи выглядит следующим образом:

<rule name="reverseproxy" stopProcessing="false"> 
    <match url="^(.*)iojs/(.*)" /> 
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false" /> 
    <action type="Rewrite" url="https://third.party.com/{R:2}" appendQueryString="false" /> 
</rule> 

Однако, когда я ударил

http://my.local.com/iojs/dyn_wdp.js 

в моем браузере, я все еще получаю исключение контроллера, не найденное исключение в asp.net MVC.

Обновление: Я заметил, что если я изменю тип действия на перенаправление (301), он будет работать, но это перенаправляет на клиент, который не то, что я хочу. Его переписать, что мне нужно сделать так, чтобы JS, казалось, обслуживался с моего сервера.

Кто-нибудь делал подобные вещи раньше, и если да, то какого шага мне не хватает?

+0

Этот домен третьей части выходит за пределы вашей сети, а затем? – DavidG

+0

Да, это так. Это совершенно отдельная сеть. – LDJ

+0

Я не уверен, что вы можете использовать ARR таким образом. Я бы предположил, что правило перезаписи передает URL-адрес https: //third.party.com/... на ваш сервер IIS, который эффективно предоставляет 404, поскольку он не несет ответственности за обслуживание этого домена. – DavidG

ответ

0

Не уверен, что это ничего не меняет, но это правило, которое я использовал с успехом.

<rule name="ReverseProxy" enabled="true" stopProcessing="true"> 
    <match url="^(.*)iojs/(.*)" />     
    <action type="Rewrite" url="https://third-party.com/{R:2}" appendQueryString="false" logRewrittenUrl="true" />     
</rule> 

В основном такой же, как ваш.

Я называю это так:

http://my.local.com/iojs/latest/dyn_wdp.js 

это создаст следующие матчи:

  • {R:0} /iojs/latest/dyn_wdp.js
  • {R:1} /iojs/latest/dyn_wdp.js
  • {R:2} latest/dyn_wdp.js

так, что норма будет успешно переписать:

https://third-party.com/latest/dyn_wdp.js +> 200 OK

принять к сведению последней в URL, bacause, если не включить его, это приведет к плохим переписывания :

https://third-party.com/ + dyn_wdp.js> 404 не найдено

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

Кроме того, в соответствии с настоящим руководством по установке: https://blogs.iis.net/erez/new-features-in-arr-application-request-routing-3-0

  1. Остановить IIS, выполнив команды чистая остановка и чистой остановки wmsvc на возвышенном окне командной строки

  2. Установить URL rewrite (v2)

  3. Установить Web Farm Framework (v1)

  4. Установите ARR (v3)

  5. Установить модуль внешнего кэша (v1)

Убедитесь, что внешний модуль Cache (v1.1 как сейчас), как это WASN» t установлен в моем случае.

Рекомендуемый способ установки ARR 3.0 осуществляется через WebPlatform, но для меня не установлен внешний кэш. Я должен был сделать это сам, не уверен, что это сработало или нет.

Кроме того, не уверен, что вы получили исключение контроллера или не только файлы 404, но .js не должны проходить через ASP.NET MVC.

После всего этого и с помощью вашего Regex все поработало так, как планировалось.

НТН

0

я настоятельно рекомендую использовать Nodejs на IIS. Там NodeJs подключает удивительный обратный прокси. https://www.npmjs.com/package/awesome-reverse-proxy Как только вы установите сеть, чем 20 строк кода JS, база остальной ширины nginx.

Смежные вопросы