运行 来自子目录的 ServiceStack

Run ServiceStack from Sub Directory

我正在使用 ServiceStack asp.net 核心 5.5。我的客户想将在 docker 容器内运行的 API 部署到其主 API 域上的子目录。

如何预先修复子目录以便所有内容都加载到子目录中?

所以现在一切正常,如果我尝试:

example.com/ss_admin/

但是客户想要代理传递给子目录所以我需要这个来工作:

example.com/subdir/ss_admin/

他们还需要像这样访问前端:

example.com/subdir/

我尝试在配置中添加 app.UsePathBase("/subdir"); 但没有成功。

带子目录的 API 前缀路径的正确方法是什么?

编辑:

主要问题在于 SS_Admin。让我详细说明。命中此路径时:

https://example.com/subdir/ss_admin/

它尝试加载这些脚本:

http://example.com/ss_admin/dist/app.css
http://example.com/ss_admin/dist/vendor.bundle.js
http://example.com/ss_admin/dist/app.bundle.js

这有 2 个问题。

  1. 它是 http,因此会因混合内容而被阻止
  2. 正在查找未映射到此项目的域的根目录。它需要在子目录
  3. 中查找

由于这些原因,没有加载任何内容。我如何为自动查询管理员编辑它?

当 运行 在外部域后面时,通常配置 .NET Core 应用程序的方式是它们 运行 在内部端口上,例如:

http://localhost:5000

它位于像 nginx 或 IIS 这样的反向代理后面,它使用虚拟主机将来自外部 example.com/subdir 的请求映射到托管 .NET Core 应用程序的内部地址,例如 http://localhost:5000 .使用 Docker 时,这将是 Docker 容器公开的外部端口。 Docker 容器内的.NET Core 应用在子目录运行 上是不正常的。

Deploying .NET Core Apps to Ubuntu with rsync shows a popular configuration for hosting .NET Core Apps, whilst Deploy .NET Core with Docker to EC2 Container Service 上的文档展示了如何在 nginx 反向代理后面部署多个 Docker 由 AWS ECS 管理的容器。