Проблемы с настройкой HTTPS на ASP.NET Core 2.1 + IIS - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь настроить https для моего веб-сайта, размещенного на IIS на Windows Server 2012. Мой проект является приложением WebApi по умолчанию из ASP.NET Core 2.1, и я использую win-acme для настройки IISс сертификатом Let's Encrypt.

Все работает нормально, за исключением того, что трафик http не перенаправляется на https.Если я проверяю логи, я получаю:

warn: Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3]
      Failed to determine the https port for redirect.

Я думал, что это можно легко решить, добавив это в мой ConfigureServices метод:

services.AddHttpsRedirection(options =>
{
    options.RedirectStatusCode = StatusCodes.Status307TemporaryRedirect;
    options.HttpsPort = 443;
});

Однако теперь я вообще не могу получить доступ к своему веб-сайту.Chrome выдает мне сообщение:

Эта страница не работает. Www.example.com перенаправляет вас слишком много раз

Если я проверяю логи, то показывает кучутаких строк:

info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET http://example.com
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
      Request finished in 0.1026ms 307
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET http://example.com
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
      Request finished in 0.1837ms 307

Кто-нибудь знает, что я делаю неправильно?

1 Ответ

0 голосов
/ 10 октября 2018

Я только что узнал ответ.Это можно решить, добавив следующий код в ConfigureServices.cs:

services.Configure<ForwardedHeadersOptions>(options =>
{
    options.ForwardLimit = 2;
    options.KnownProxies.Add(IPAddress.Parse("127.0.10.1"));
    options.ForwardedForHeaderName = "X-Forwarded-For-My-Custom-Header-Name";
});

Источник: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer?view=aspnetcore-2.1#forwarded-headers-middleware-options

...