Проблема
Похоже, ваш прокси-сервер переписывает путь.
- Перед прокси: /blog/images/banner1.png
- После прокси: / images/banner1.png
Asp генерирует абсолютные (относительные хосты) ссылки (только путь, но начинается с косой черты "/").Это означает, что мы должны сообщить платформе, что она должна ставить перед всеми URL-адресами префикс "/blog".
Solution
Сделайте это (для ядра 2.1 asp.net), вставив следующий фрагмент кода вваш класс запуска:
app.Use((context, next) =>
{
context.Request.PathBase = new PathString("/blog");
return next();
});
Пример кода из: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer?view=aspnetcore-2.1
Вставьте этот фрагмент перед любым другим промежуточным программным обеспечением в вашем методе Configure.
Вы можете проверить это на своемлокальная машина тоже.Все сгенерированные ссылки должны начинаться с префикса "/ blog", чтобы они не работали на вашем компьютере разработчика.
Используйте конфигурацию
Вам нужно будет настроить ее, например, так:
var basePath = Configuration.GetSection("BASE_PATH").Value;
if (basePath != null)
{
Console.WriteLine($"Using base path '{basePath}'");
// app.Use().. goes here
}
(Предполагая, что вы читаете конфигурацию из env vars при запуске.)
… и укажите этот env var в вашем депозите kubernetes:
...
containers:
- name: myapp
image: myappimage
env:
- name: BASE_PATH
value: "/blog"