Для HTTPS сайтов в IIS не виден настоящий IP клиента
Материал из 1GbWiki.
Реализация HTTPS в веб-сервере IIS, к сожалению, является недостаточно гибкой для того, чтобы удобно и оперативно оперировать бесплатными HTTPS / SSL сертификатами от LetsEncrypt. Поэтому работа HTTPS на IIS на нашем хостинге осуществляется с помощью прокси-сервера (акселератора), который эффективно терменирует HTTPS соединения, превращая их в HTTP.
Иными словами, клиенты заходят на сайт по HTTPS, а веб-сервер думает, что обслуживает HTTP запрос от прокси-сервера.
У этого есть два следствия.
- Веб-сервер IIS не может определить, какой протокол используется. Поэтому если вы хотите сделать переадресацию на HTTPS, это нужно делать нестандартным способом. Вот тут это описано: Переадресация (редирект) с HTTP на HTTPS версию сайта.
- Веб-сервер IIS не может определить настоящий IP адрес клиента. Однако, если он вам нужен, вы можете получить его в HTTP заголовке X-Forwarded-For, например, об этом описано тут - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For, или тут - https://learn.microsoft.com/ru-ru/aspnet/core/host-and-deploy/proxy-load-balancer?view=aspnetcore-9.0, можете использовать эти документы и приемы работы в качестве ориентира.
К сожалению, в веб-сервере IIS нет штатных способов исправить эту ситуацию.