Установите переменную сервера HTTP_HOST в ASP.NET (4.7) MVC за обратным прокси-сервером в Azure

#asp.net-mvc #azure #iis #reverse-proxy #http-host

Вопрос:

Я унаследовал более старое приложение .NET 4.7 MVC, размещенное в Azure и расположенное за обратным прокси-сервером (шлюзом приложений). Правила перезаписи были настроены так, чтобы он работал с использованием правильного домена, когда запросы пересылаются с обратного прокси-сервера, это было действующее правило перезаписи:

Web.Config

 <rule name="Set HOST header based on X-Original-Host header">
  <match url="(.*)"></match>
  <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
    <add input="{HTTP_X_ORIGINAL_HOST}" pattern="^$" negate="true" />
  </conditions>
  <serverVariables>
    <set name="HTTP_HOST" value="{HTTP_X_ORIGINAL_HOST}"></set>
  </serverVariables>
</rule>
 

Я понимаю, что Шлюз приложений (v1) использовал нестандартные заголовки, такие как X-Original-Host (вместо X-Forwarded-Host), поэтому приведенное выше правило применялось для установки переменной сервера IIS.

Теперь мы перешли на входную дверь, которая отправляет стандартные заголовки X-переадресации. Это теперь означает, что приведенное выше правило не работает по умолчанию, и я прибегнул к обходным путям, отправив заголовок «X-Original-Host» вручную для каждого запроса (используя правила маршрутизации).

Я хочу покончить со всем этим и использовать стандартный заголовок X-Forwarded-Host для установки переменной сервера HTTP_HOST.

Вопросы:

  1. Могу ли я просто легко заменить HTTP_X_ORIGINAL_HOST на HTTP_X_FORWARDED_HOST?
  2. Я пытался найти документацию, связанную с приведенными выше значениями, но не могу, может кто-нибудь, пожалуйста, указать мне правильное направление?
  3. Некоторые люди говорят, что нужно использовать <proxy enabled="true" preserveHostHeader="true" /> под system.webServer, но я не могу найти официальную документацию Microsoft по этому поводу

В принципе, я хочу знать, как установить переменную HTTP_HOST с заголовком X-Forwarded-Host.

Комментарии:

1. Вы можете взглянуть на: блог. frankfu.com.au/2018/11/13/…

2. @TheobaldDu это то, от чего я пытаюсь уйти, мы перешли из AG в FrontDoor. Его код — это именно то, что у меня сейчас есть.