Ваш вопрос о том, как получить реальный внешний хост в ASP.NET Core: клиенты знают только о ://mydomain.com
.И ваш обратный прокси-сервер перенаправляет запросы на ://machinename
(веб-сайт ASP.NET Core).
Не уверен, как работает ваш обратный прокси.Но гораздо лучше настроить свой прокси для автоматической установки хоста.например, конфигурация для nginx:
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
и зарегистрируйте промежуточное ПО для работы с хостом Forwarded
на вашем Startup.cs
.
app.UseForwardedHeaders(new ForwardedHeadersOptions{
ForwardedHeaders = ForwardedHeaders.XForwardedHost|ForwardedHeaders.XForwardedFor|ForwardedHeaders.XForwardedProto
});
. Таким образом, ядро ASP.NETсможет реализовать реальный хост / порт / схему и т. д.