【问题标题】:Nginx conf for a SaaS - is there a decent way to handle this scenario?用于 SaaS 的 Nginx conf - 有没有一种不错的方法来处理这种情况?
【发布时间】:2012-03-14 12:08:15
【问题描述】:

我正在开发一个网络应用程序。用户将注册并分配一个子域,允许他们通过account-456.myappsdomain.com 访问内容。拥有该子域的目的并不是让他们直接访问它。相反,他们将被告知将 www.their-own-site.com 的 CNAME 指向 account-456.myappsdomain.com,以便他们能够访问自己的域并直接在自己的域上查看其内容。是否有可能使用 Nginx 创建一个允许此操作的配置,而无需我在每次用户注册帐户时编辑配置或添加虚拟主机?

目前,我的应用程序使用主机标头(拆分点以获取 account-456 位)来获取帐户 ID,然后基于此设置主题。我假设使用这种新的配置,我会检查他们的域的主机头(我会让他们进入应用程序),查询域(及其所属的帐户)并设置他们的主题那样。这是正确的吗?

【问题讨论】:

标签: nginx hostname cname


【解决方案1】:

为了回答您的问题,先生,可以在 Nginx 中进行通配符子域的站点配置,并且 www.example.com 的 CNAME 指向 acct-123.yourappsdomain.com 将导致对前者的访问像后者一样对待。由您负责监听 www.example.com 的主机名,在数据库中查找域的帐户信息,并加载正确的内容。基本上,您将使用与提取 CNAME 域的子域相同的逻辑。

【讨论】:

    【解决方案2】:

    我也面临着类似的情况。我的计划是从应用程序生成 nginx 配置 server 块(我知道哪个域是谁的)。每次添加、删除或更改租户时,都会重新生成 conf 并重新加载服务器。使用 jinja 之类的模板可能会更简洁。

    编辑:

    您可以按照建议的here 使用map,但我认为它会降低运行时性能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-06
      • 1970-01-01
      • 2016-05-27
      相关资源
      最近更新 更多