У меня есть новое приложение do tnet core MVC, которое находится за прокси-сервером ARIS IIS и не читает заголовок X-FORWARDED-HOST.
В частности, мне нужно правильно настроить хост как Я использую openID Connect и ему нужно написать правильные URL-адреса перенаправления.
Он работает на моем сервере VS dev, но не на моем промежуточном сервере.
Теперь весь код использует example.com для замены мой реальный домен.
startup.cs
var forwardingOptions = new ForwardedHeadersOptions()
{
ForwardedHeaders = ForwardedHeaders.All,
AllowedHosts = new List<string> { "*.example.com"},
RequireHeaderSymmetry = false
};
app.UseForwardedHeaders(forwardingOptions);
контроллер:
var ret = new StringBuilder();
foreach (var header in Request.Headers)
{
ret.AppendLine(header.Key + ":" + header.Value);
}
return Content(Request.Host + "\r\n"+ret.ToString());
выходной тест (отредактирован для удаления не связанных заголовков)
pc023835.example.com
Host:pc023835.example.com
X-Original-Host:localhost:53848
X-FORWARDED-PORT:443
Этап IIS:
web-test.example.com
Host:web-test.example.com
X-FORWARDED-HOST:newdev.example.com
X-FORWARDED-PORT:443
X-FORWARDED-PROTO:https
X-Original-URL:/file-downloader/
X-Forwarded-For:10.101.40.1:10400
X-ARR-SSL: EDITED OUT
X-ARR-LOG-ID:d2224167-c14f-43e0-af40-86bfd360d22f
Правило перезаписи:
<rule name="ReverseProxyInboundRule1" enabled="true" stopProcessing="true">
<match url="^file-downloader/(.*)" />
<action type="Rewrite" url="https://web-test.example.com/file-downloader/{R:1}" />
<serverVariables>
<set name="HTTP_X_FORWARDED_HOST" value="{HTTP_HOST}" />
<set name="HTTP_X_FORWARDED_PORT" value="443" />
<set name="HTTP_X_FORWARDED_PROTO" value="https" />
</serverVariables>
</rule>