Да, это обрабатывает правильный протокол из заголовка X-Forwarded-For для большинства промежуточного программного обеспечения, но, очевидно, не для Rewrite.AddRedirectToHttps. В итоге мне пришлось использовать ваше решение самостоятельно :), но мне пришлось немного его изменить, чтобы не перенаправлять http: / / если заголовок X-Forwarded-Proto отсутствует. Таким образом, моя проверка работоспособности Load Balancer не была перенаправлена на https.
я есть веб-сайт, который правильно запускает HTTPS в моей локальной среде. Когда я загружаю его в AWS, он просто останавливается или перенаправляется навсегда.
Моя установка в AWS - это приложение Elastic Beanstalk, база данных RDS с MS SQL, я добавил балансировщик нагрузки для пересылки запросов HTTPS, и у меня есть сертификат SSL, правильно назначенный для балансировщика нагрузки. Из всего, что я могу сказать, мое приложение работает, фактически Entity Framework запустил и правильно построил мою базу данных в моем экземпляре RDS. Я просто не могу зайти на сайт через интернет.
Я пытался настроить Слушатели разными способами. Если я установлю их так, они просто перенаправят навсегда:
Если я установлю их так, это просто время ожидания:
у меня естькод переадресации порта HTTP / HTTPS по умолчанию в моем файле Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
// Sets all calls to require HTTPS: https://docs.microsoft.com/en-us/aspnet/core/security/enforcing-ssl
services.Configure<MvcOptions>(options =>
{
options.Filters.Add(new RequireHttpsAttribute());
});
...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
// Force all HTTP requests to redirect to HTTPS: https://docs.microsoft.com/en-us/aspnet/core/security/enforcing-ssl
var options = new RewriteOptions().AddRedirectToHttps();
app.UseRewriter(options);
...
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor |
ForwardedHeaders.XForwardedProto
});
...
}
Я потратил на это дни и не могу заставить его работать. Я попытался удалить весь мой код HTTPS, и это не работает. Я пробовал решения кода из блогов, какэто а такжеэто и это тоже не работает. Из того, что я прочитал, балансировщик нагрузки завершает обработку запроса HTTPS, а затем перенаправляет запрос HTTP в мое приложение. Но я не знаю, как правильно справиться с этим, по-прежнему применять HTTPS и перенаправлять HTTP на HTTPS.
Кажется, что это будет что-то, что будет работать из коробки без кучки настроек от меня. Если это не так, я бы подумал, что многие другие уже столкнулись бы с этой проблемой, и в интернете была бы информация об этом. Я скучаю по чему-то маленькому? Потому что я полностью в своем уме.
Если вы можете ответить на это, вы будете моим новым героем.