#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.
Вопросы:
- Могу ли я просто легко заменить HTTP_X_ORIGINAL_HOST на HTTP_X_FORWARDED_HOST?
- Я пытался найти документацию, связанную с приведенными выше значениями, но не могу, может кто-нибудь, пожалуйста, указать мне правильное направление?
- Некоторые люди говорят, что нужно использовать
<proxy enabled="true" preserveHostHeader="true" />
под system.webServer, но я не могу найти официальную документацию Microsoft по этому поводу
В принципе, я хочу знать, как установить переменную HTTP_HOST с заголовком X-Forwarded-Host.
Комментарии:
1. Вы можете взглянуть на: блог. frankfu.com.au/2018/11/13/…
2. @TheobaldDu это то, от чего я пытаюсь уйти, мы перешли из AG в FrontDoor. Его код — это именно то, что у меня сейчас есть.