Хорошо, я суммирую комментарии:
Мой балансировщик нагрузки не выполняет перенаправление HTTPS, поэтому я думаю, что мне нужно промежуточное программное обеспечение.Разве я неправильно понимаю?
Итак, вы отправляете HTTP-запрос на прокси-сервер, который перенаправляется в ваше приложение, и затем вы получаете эту ошибку?
Это потому, что X-Forwarded-Proto
заголовки имеют значение http
, а промежуточное ПО Https Redirection не распознает его как безопасный протокол и попытается перенаправить.
Согласно документации , конфигурация https необходима для UseHttpsRedirection
:
Для промежуточного программного обеспечения должен быть доступен порт для перенаправления небезопасного запроса на HTTPS.Если порт недоступен:
- Перенаправление на HTTPS не происходит.
- Промежуточное программное обеспечение регистрирует предупреждение «Не удалось определить порт https для перенаправления».
HTTPS-запросы (к прокси-серверу) на прокси-сервере должны тогда работать, поскольку заголовок X-Forwarded-Proto
установлен на https
, а промежуточное ПО перенаправления должно его пропустить.
В этом случае вам также необходимо настроить https в приложении (так как оно требуется для промежуточного программного обеспечения).Это может быть самозаверяющий сертификат, в конфигурации обратного прокси-сервера это 443 в приложении ASP.NET Core никогда не должно попасть.Вам даже не нужно выставлять порт (при использовании Docker).
Либо обработайте перенаправление https на самом обратном прокси-сервере.Это лучший подход, так как запросы никогда не попадут в ваше приложение, если только его https.