Multi-Tenancy · Nuxt Site Config · Nuxt SEO

[NuxtSEO](https://nuxtseo.com/ "Home")

- [Modules](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)
- [Tools](https://nuxtseo.com/tools)
- [Pro](https://nuxtseo.com/pro)
- [Learn SEO](https://nuxtseo.com/learn-seo/nuxt) [Releases](https://nuxtseo.com/releases)

[1.4K](https://github.com/harlan-zw/nuxt-seo)

[Nuxt SEO on GitHub](https://github.com/harlan-zw/nuxt-seo)

[User Guides](https://nuxtseo.com/docs/site-config/getting-started/introduction)

[API](https://nuxtseo.com/docs/site-config/api/use-site-config)

[Releases](https://nuxtseo.com/docs/site-config/releases/v4)

Site Config

- [Switch to Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)
- [Switch to Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)
- [Switch to Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)
- [Switch to Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)
- [Switch to OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)
- [Switch to Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)
- [Switch to Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)
- [Switch to SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)
- [Switch to Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)
- [Switch to AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)

Search…```k`` /`

v4.0.8

- Playgrounds
- [Discord Support](https://discord.com/invite/275MBUBvgP)

### Getting Started

- [Introduction](https://nuxtseo.com/docs/site-config/getting-started/introduction)
- [Installation](https://nuxtseo.com/docs/site-config/getting-started/installation)
- [Troubleshooting](https://nuxtseo.com/docs/site-config/getting-started/troubleshooting)

### Core Concepts

- [Recommended Config](https://nuxtseo.com/docs/site-config/guides/setting-site-config)
- [How it works](https://nuxtseo.com/docs/site-config/guides/how-it-works)
- [I18n Integration](https://nuxtseo.com/docs/site-config/guides/i18n)
- [Runtime Site Config](https://nuxtseo.com/docs/site-config/guides/runtime-site-config)
- [Multi-Tenancy](https://nuxtseo.com/docs/site-config/guides/multi-tenancy)

Core Concepts

# Multi-Tenancy

[Copy for LLMs](https://nuxtseo.com/docs/site-config/guides/multi-tenancy.md)

## [Introduction](#introduction)

Multi-tenancy allows you to serve multiple sites with different configurations using a single Nuxt application. This is useful when you need to:

- Host multiple domains with different branding
- Serve region-specific content
- Maintain multiple sites with shared codebase

You can configure multi-tenancy using static configuration or dynamically at [runtime](https://nuxtseo.com/docs/site-config/guides/runtime-site-config).

## [Usage](#usage)

To use build-time multi-tenancy configuration you can use the `multiTenancy` option:

```
export default defineNuxtConfig({
  site: {
    multiTenancy: [
      {
        hosts: ['www.example.com', 'example.com', 'local.example.com'],
        config: {
          name: 'Example',
          url: 'example.com' // canonical
        },
      },
      {
        hosts: ['www.foo.com', 'foo.com', 'local.foo.com'],
        config: {
          name: 'Foo',
          url: 'foo.com', // canonical
          description: 'Foo description',
        },
      },
    ]
  }
})
```

Each multi-tenant configuration requires:

- `hosts`: An array of hostnames that should use this configuration

It's recommended to add any non-canonical hostnames to the `hosts` array to avoid duplicate content issues. For example, [www](http://www).* and non- [www.*](http://www.*) hostnames should use the same configuration.

- `config`: The site configuration to apply when the hostname matches

The config object supports all standard site configuration options plus any custom properties you need.

## [How it works](#how-it-works)

1. When the module receives a request, it checks the hostname against the configured hosts arrays
2. When it finds a match, it applies the corresponding config
3. The configuration is made available via `useSiteConfig()` in Nuxt app code (client and SSR), and via `getSiteConfig(event)` in Nitro handlers or middleware where you have access to the `H3Event`

## [Runtime Multi-Tenancy](#runtime-multi-tenancy)

Runtime multi-tenancy is useful when you need to:

- Set configuration based on complex runtime conditions
- Load configuration from external sources
- Handle dynamic subdomains
- Implement A/B testing scenarios

To use get started with runtime multi-tenancy you'll need to create a Nitro plugin.

server/plugins/site-config.ts

```
import { getNitroOrigin } from '#site-config/server/composables'

export default defineNitroPlugin((nitroApp) => {
  nitroApp.hooks.hook('site-config:init', ({ event, siteConfig }) => {
    const origin = getNitroOrigin(event)
    // Example: Set configuration based on subdomain
    if (origin.startsWith('https://fr.')) {
      // push whatever config you'd like for this request
      siteConfig.push({
        name: 'Mon Site',
        url: 'https://fr.example.com',
        defaultLocale: 'fr',
        currentLocale: 'fr',
      })
    }
  })
})
```

Check the [`site-config:init`](https://nuxtseo.com/docs/site-config/nitro-api/nitro-hooks#site-config-init) hook documentation for more information.

[Edit this page](https://github.com/harlan-zw/nuxt-site-config/edit/main/docs/content/2.guides/multi-tenancy.md)

[Markdown For LLMs](https://nuxtseo.com/docs/site-config/guides/multi-tenancy.md)

Did this page help you?

[Runtime Site Config Learn how to set site config at runtime in your Nuxt app.](https://nuxtseo.com/docs/site-config/guides/runtime-site-config) [useSiteConfig() How to access site config within a Nuxt context.](https://nuxtseo.com/docs/site-config/api/use-site-config)

On this page

- [Introduction](#introduction)
- [Usage](#usage)
- [How it works](#how-it-works)
- [Runtime Multi-Tenancy](#runtime-multi-tenancy)

[GitHub](https://github.com/harlan-zw/nuxt-seo) [ Discord](https://discord.com/invite/275MBUBvgP)

### [NuxtSEO](https://nuxtseo.com/ "Home")

- [Getting Started](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)
- [MCP](https://nuxtseo.com/docs/nuxt-seo/guides/mcp)

Modules

- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)

### [NuxtSEO Pro](https://nuxtseo.com/pro "Home")

- [Getting Started](https://nuxtseo.com/pro)
- [Dashboard](https://nuxtseo.com/pro/dashboard)
- [Pro MCP](https://nuxtseo.com/docs/nuxt-seo-pro/mcp/installation)

### [Learn SEO](https://nuxtseo.com/learn-seo "Learn SEO")

Nuxt

- [Mastering Meta](https://nuxtseo.com/learn-seo/nuxt/mastering-meta)
- [Controlling Crawlers](https://nuxtseo.com/learn-seo/nuxt/controlling-crawlers)
- [Launch & Listen](https://nuxtseo.com/learn-seo/nuxt/launch-and-listen)
- [Routes & Rendering](https://nuxtseo.com/learn-seo/nuxt/routes-and-rendering)
- [Staying Secure](https://nuxtseo.com/learn-seo/nuxt/routes-and-rendering/security)

Vue

- [Vue SEO Guide](https://nuxtseo.com/learn-seo/vue)
- [Mastering Meta](https://nuxtseo.com/learn-seo/vue/mastering-meta)
- [Controlling Crawlers](https://nuxtseo.com/learn-seo/vue/controlling-crawlers)
- [SPA SEO](https://nuxtseo.com/learn-seo/vue/spa)
- [SSR Frameworks](https://nuxtseo.com/learn-seo/vue/ssr-frameworks)
- [SEO Checklist](https://nuxtseo.com/learn-seo/checklist)
- [Pre-Launch Warmup](https://nuxtseo.com/learn-seo/pre-launch-warmup)
- [Backlinks & Authority](https://nuxtseo.com/learn-seo/backlinks)

### [Tools](https://nuxtseo.com/tools "SEO Tools")

- [Social Share Debugger](https://nuxtseo.com/tools/social-share-debugger)
- [Robots.txt Generator](https://nuxtseo.com/tools/robots-txt-generator)
- [Meta Tag Checker](https://nuxtseo.com/tools/meta-tag-checker)
- [HTML to Markdown](https://nuxtseo.com/tools/html-to-markdown)
- [XML Sitemap Validator](https://nuxtseo.com/tools/xml-sitemap-validator)
- [Schema.org Validator](https://nuxtseo.com/tools/schema-validator)
- [Keyword Idea Generator](https://nuxtseo.com/tools/keyword-generator)
- [Keyword Research](https://nuxtseo.com/tools/keyword-research)
- [SERP Analyzer](https://nuxtseo.com/tools/serp-analyzer)
- [Domain Rankings](https://nuxtseo.com/tools/domain-rankings)

Copyright © 2023-2026 Harlan Wilton - [MIT License](https://github.com/harlan-zw/nuxt-seo/blob/main/license) · [mdream](https://mdream.dev)