WordPress Multisite lets related sites share one installation, central administration and software versions. On a VPS, it can consolidate brands, language sites or regional projects when their owners accept the shared maintenance and trust boundaries. Site count alone does not determine capacity, and a VPS plan’s resource guarantees and administration access must be checked separately.
This guide covers network planning, installation, domain mapping, HTTPS and performance tuning for WordPress Multisite on a VPS. It also explains the conditions that make the setup work: compatible components, verified domain routing and certificates, private-response cache exclusions, scheduled tasks for every site and tested recovery. The examples are planning illustrations, not a complete production server configuration or a promise of any particular traffic capacity.
When WordPress Multisite Fits a VPS
Start with the administration and isolation requirements. Multisite can suit related sites sharing a software lifecycle; separate installations may fit incompatible versions or independent trust boundaries better. Shared hosting may support Multisite if its operator provides the necessary controls. A VPS gives additional options only where the plan grants the relevant access and your team can manage them.
What WordPress Multisite Actually Does
WordPress Multisite lets you run multiple sites from a single WordPress installation and database. Think of it as a “network” of sites that shares:
- Shared codebase: WordPress core, themes and plugins come from the same installation.
- Shared user accounts: users can have different roles on different sites; site membership does not grant network administration.
- Central updates: a shared component update can affect many sites, so test compatibility and plan any required per-site database upgrades.
Sites have their own content tables, settings and upload locations within the installation, and may use different domains. They still share software and infrastructure. Multisite is not a strong isolation boundary between mutually untrusted tenants, and it does not automatically provide shared storefronts, content synchronization or multilingual translation workflows.
Check Resources and Administration Access
Size the combined workload rather than assuming Multisite always needs a larger server. When comparing VPS plans, check:
- Resource allocation: CPU, memory, storage and network guarantees vary. Shared CPU or storage can still contend with other workloads.
- Stack control: confirm access to web-server, PHP-FPM, database and cache settings, especially on managed plans.
- DNS and certificates: confirm who controls each zone, domain authorization, ACME credentials and certificate deployment.
- Scaling: verify resize downtime, storage limits and cost. Horizontal scaling also needs coordinated sessions, uploads, cache, database access, deployment and availability.
If you’re not sure how to size your VPS for your expected traffic and site count, our guide on choosing the right VPS resources for PHP applications provides a good baseline for CPU, RAM, and storage planning.
Planning Your Multisite Architecture on a VPS
Multisite is easiest when you plan the network before installation. A little architecture work now saves painful rewrites later.
Choose a URL Strategy: Subdirectories, Subdomains, or Mapped Domains
The installer offers domain-based subdomain networks and path-based subdirectory networks, subject to installation restrictions. Separate-domain mapping can be used with either:
- Subdirectories: example.com, example.com/site1, example.com/site2
- Subdomains: example.com, site1.example.com, site2.example.com
- Domain mapping (separate domains): example.com, brand1.com, brand2.net all living on the same Multisite
For networks that need distinct hostnames or domains, two common approaches are:
- A subdomain network with explicit DNS records or wildcard DNS for on-demand sites, optionally mapping selected sites to independent domains.
- A subdirectory network with sites under different paths, optionally mapping selected sites to independent domains.
Subdirectories share a hostname, so caching and security-header rules may need path-specific configuration. Separate domains support distinct branding but add DNS and certificate management. Neither structure guarantees better SEO; choose based on your content, audience, and operational needs.
Domain Strategy for a Multisite Network
If you’re building multilingual or multi‑region sites, it’s worth stepping back to think about domains and SEO. Will you use:
- Separate ccTLDs (example.de, example.fr)
- Subdomains (de.example.com, fr.example.com)
- Subdirectories (example.com/de/, example.com/fr/)
Our article on hreflang and international SEO architectures is a great companion when deciding how to structure a global Multisite network.
DNS and Nameserver Planning
Before you even install WordPress, align your DNS and nameserver strategy:
- Choose registrar, external or self-managed authoritative DNS with a recovery and redundancy plan.
- Plan A records and publish AAAA only after checking the IPv6 listener, routing, firewall and certificate/application path.
- For subdomain networks, explicit records can serve a fixed set of sites; wildcard DNS supports on-demand subdomains. Keep the base-domain record separately.
- Confirm control of each mapped domain, preserve mail/TXT records and plan TTL overlap for any existing service.
If self-hosting authoritative DNS is appropriate, plan independent redundancy rather than placing the only DNS service on the same VPS as the websites. The private nameserver and glue guide explains delegation and glue where required; branded nameservers are optional for running Multisite.
For a refresher on record types (A, AAAA, CNAME, MX, TXT, CAA and more), bookmark our article explaining DNS records like a friend.
Installing WordPress Multisite on a VPS
Prepare a restricted, supported server environment and a valid HTTPS endpoint for the main domain before entering installer credentials. The exact packages and rules depend on the OS, web server, PHP version and existing application. Test the process on a representative environment before converting an established site.
Prepare the Server Stack
On your VPS you will typically run:
- Web server: Nginx or Apache
- PHP‑FPM: a supported PHP 8.x release compatible with your WordPress version, themes, and plugins, with the required and recommended extensions for your workload
- Database: MariaDB or MySQL
Our WordPress‑focused tuning guide, The Server-Side Secrets That Make WordPress Fly, covers PHP‑FPM, OPcache, Redis and MySQL tuning in depth and pairs nicely with this Multisite setup.
Standard WordPress Install
- Create a database and dedicated database user with strong credentials and privileges appropriate for installation and updates.
- Obtain WordPress from the official source and deploy it to the intended web root with suitable ownership and permissions.
- Configure a complete virtual host, including safe PHP handling, routing and access restrictions; restrict installer access until setup is complete.
- Provision a valid certificate for the main hostname and complete the installer over HTTPS. Verify login, uploads and permalinks before enabling Multisite.
At this stage you should have a normal single‑site WordPress installation reachable over HTTPS on the main domain.
Enable Multisite in wp-config.php
Before conversion, back up files, database and configuration and verify a rollback route. Check that pretty permalinks work, inventory plugin compatibility and deactivate active plugins during network setup. The following constant exposes Network Setup; it does not complete the conversion:
- Edit
wp-config.phpand add above the line that reads/* That's all, stop editing! Happy publishing. */:
define( 'WP_ALLOW_MULTISITE', true );
- Refresh the WordPress admin. Go to Tools > Network Setup.
- Choose Subdomains or Subdirectories based on your plan.
- Follow the installation-specific Network Setup instructions to add the specified lines to
wp-config.phpand, on Apache, update.htaccess. For standalone Nginx, an administrator must separately configure the appropriate Multisite rewrite and server rules using the official WordPress Nginx guidance; WordPress cannot apply Nginx server configuration.
Use the network type available for your installation and follow its generated settings, not a generic copied configuration. After applying the appropriate WordPress and server settings, log in again and verify Network Admin, new-site creation, permalinks and media. Re-enable compatible plugins deliberately and test affected sites. Network Setup does not apply standalone Nginx configuration.
Domain Mapping for WordPress Multisite
Modern WordPress no longer needs a separate “domain mapping” plugin. The WordPress-side mapping uses the Site Address (URL) field for each site; DNS, virtual-host routing, and certificates must also be configured.
Core Concept: Network URL vs Site URL
When you create a new site from Network Admin, you define:
- Site domain/path: e.g. site2.example.com or /site2
- Site title
- Admin email
Create the subsite using the network’s default URL structure, then map its domain through Site Address (URL) after preparing DNS, server routing and HTTPS. Confirm domain ownership or authorization and that the name is not already assigned to another tenant. DNS resolution alone is not an authorization process.
Step‑by‑Step Domain Mapping
- Create and test the subsite under its initial subdomain or path.
- Prepare the mapped domain. The documentation address
brand1.com -> 203.0.113.10illustrates an A record. Forwww.brand1.com -> 203.0.113.10, use an appropriate A record or a CNAME to brand1.com. Replace these examples with domains you control and your actual address; use AAAA only for a verified IPv6 path. - Configure routing and TLS before the URL switch. Point each accepted hostname to the correct installation and provision certificate coverage for the apex and www if used. During migration, prepare the destination via controlled testing and schedule the public DNS cutover with final data synchronization.
- In Network Admin, open Sites > All Sites > Edit for the intended site. Change Site Address from, for example,
https://site1.example.comtohttps://brand1.com. - Verify that
https://brand1.comserves the correct site, login and cookies work, and intended canonical redirects have no loops. Retain required routing and TLS on an old hostname if it redirects; removing it too early can break the redirect before HTTP is reached.
Repeat for each mapped domain. Under the hood, all sites still live in one database and codebase; you’re simply telling WordPress which domain is attached to which site.
DNS Patterns for Subdomain Networks
If your base network uses subdomains, you’ll typically set:
A example.com 203.0.113.10A *.example.com 203.0.113.10(wildcard)
The wildcard can supply answers for otherwise undefined names such as en.example.com, shop.example.com and blog.example.com. Explicit DNS records and existing names can change wildcard behavior. It does not configure web-server routing, create a WordPress site or supply TLS coverage. Keep the apex record and verify answers for actual names rather than assuming every label resolves identically.
Mapped domains need their own DNS configuration and must be accepted by the web server and assigned to the correct WordPress site. A records use IPv4 addresses; optional AAAA records require a tested IPv6 path. All may share the installation’s web root, but unknown Host values should not be allowed to select arbitrary tenant content or populate cache entries.
Nginx / Apache Virtual Host Considerations
For domain‑mapped Multisite on a single VPS:
- Accepted hostnames may share a document root across one or several virtual hosts. Choose the arrangement according to routing and certificate management.
- Use
server_namein Nginx orServerAliasin Apache for the intended names, and define safe handling for unknown hostnames. - With separate certificates, configure corresponding TLS virtual hosts/SNI selection. One ordinary server block does not automatically select among arbitrary certificate files just because several names are listed.
Routing illustration only: the following original Nginx snippet omits PHP handling, rewrite rules, TLS and access restrictions. Do not enable it as a complete WordPress vhost; serving a PHP tree without the correct handler can expose source or break the site. The domain and path values are placeholders to replace with your own:
server {
listen 80;
server_name example.com *.example.com brand1.com brand2.net;
root /var/www/example.com/public;
# ... PHP and rewrite rules ...
}
For HTTPS, configure the appropriate listen 443 ssl listener, certificate chain and private key within a complete virtual-host design. Each accepted hostname must select a certificate that actually covers it. Validate the full configuration and test hostname routing, login, media, redirects and certificate chains before enabling it; the snippet above is not an operational validation.
SSL for Multisite and Mapped Domains
SSL is where many Multisite setups become fragile. You have multiple hostnames, possibly wildcards plus individual domains, and a mix of HTTP challenges. The key is to plan your certificate strategy upfront.
Certificate Options for Multisite
You essentially have four patterns:
- Exact-name certificate: covers only the names listed; example.com does not automatically cover www.example.com.
- Wildcard certificate:
*.example.comcovers one label such as shop.example.com, not example.com, deep.shop.example.com or brand1.com. Add apex coverage separately if needed. - SAN certificate: lists several exact names, subject to CA limits and domain authorization.
- Separate certificates: each mapped domain or name group has its own certificate and renewal/deployment path.
One workable pattern for a growing subdomain network is:
- Explicit base-domain coverage plus wildcard coverage where automatic subdomain creation requires it.
- Per-domain or carefully grouped certificates for mapped domains, issued through an authorized ACME workflow.
- Inventory and alerts for every certificate and its active deployment, with private-key and DNS-credential access limited to the required operators.
If you’re unsure how to choose between DV, OV, EV, and wildcard SSL, our guide on selecting the right SSL certificate type walks through real‑world scenarios for e‑commerce and SaaS.
ACME Challenges: HTTP‑01 vs DNS‑01
Automatic SSL usually relies on the ACME protocol. You’ll need to decide how certificates are validated:
- HTTP-01: serves a challenge under
http://yourdomain/.well-known/acme-challenge/...on port 80. Ensure validation can reach the correct challenge response through all published routes and proxies. It cannot issue wildcard certificates. - DNS-01: proves control using a TXT record under the challenge name and supports wildcard issuance. For Let’s Encrypt wildcard certificates, use DNS-01. Automating tenant-domain renewals requires authorized DNS API access or an appropriate challenge delegation; a one-time manual TXT edit is not renewal automation.
We’ve written a deep dive on HTTP-01 and DNS-01 ACME challenges and another playbook on Let’s Encrypt wildcard SSL automation; both are directly applicable to Multisite networks on a VPS.
Practical SSL Setup Flow on a VPS
- Inventory the base, subsite, mapped and redirect hostnames and verify control/authorization for each.
- Provision base-domain HTTPS before installer or admin use. Add
*.example.comthrough DNS-01 if a wildcard is needed; include the apex as a separate name. - Issue mapped-domain certificates using a supported ACME method and configure the correct TLS virtual hosts/SNI selection.
- Automate renewal, validation, deployment and service reload where required; protect DNS/API credentials with the narrowest feasible scope.
- Test the renewed certificate actually served for each hostname and monitor expiry and renewal failures. Issuing a certificate does not prove it reached the active endpoint.
Don’t forget to set correct CAA records if you lock your domains to specific CAs. Our article on CAA records and multi‑CA strategies covers how to avoid accidental certificate issuance failures.
Handling Mixed Content and Redirects
Once HTTPS is in place, ensure:
- After verifying certificate coverage, redirect HTTP to the intended HTTPS URL, preserving relevant paths and query strings.
- Use
https://for each Site Address (URL), with explicit canonical-host rules. - Review themes, plugins and stored URLs for hard-coded
http://references. - When TLS ends at a trusted proxy, configure HTTPS detection for that actual proxy path. Do not trust arbitrary forwarded headers from public clients.
For mixed content, inventory references and back up the database before using a Multisite-aware, serialized-data-safe search/replace process. Use a dry run, target the intended site tables/URLs and avoid blind replacements across shared user or network data. Test assets, login/cookies, redirects and callbacks. Migrating existing sites additionally requires checking imported users, plugin compatibility, uploads, final writes and rollback; a content export is not a full transfer of settings or application data.
Performance Tuning WordPress Multisite on a VPS
Measure the aggregate workload across sites: request rate, simultaneous PHP work, p95/p99 latency, errors, memory pressure, database activity, cache misses and scheduled-job duration. Tune the limiting resource and retest. A codebase shared by many sites does not imply fixed per-site cost or automatic capacity as the network grows.
PHP‑FPM Pools and OPcache
On a Multisite network, PHP workers serve all sites. Make sure:
- pm.max_children: select from measured worker memory, CPU and dependency capacity; too many workers can exhaust memory or overload the database.
- pm.max_requests: worker recycling can limit growth from some library leaks, but does not fix the leak. Values such as 500–1000 are examples to measure, not required defaults.
- opcache.memory_consumption: size the opcode cache for the actual loaded scripts and monitor misses/restarts. Shared files may be reused within the relevant PHP cache instance; separate runtimes and deployments still need capacity planning.
- Define how code changes and rollback become visible to OPcache. Disabled timestamp checks require explicit invalidation or a suitable restart; monitor the deployment path.
Our server‑side tuning article mentioned earlier goes into specific starting values and measurement techniques.
Database (MariaDB/MySQL) Tuning
Multisite uses more tables per network but the same engine under the hood. Focus on:
- innodb_buffer_pool_size: budget hot-data caching together with connections, other database allocations and PHP/cache memory.
- Query cache: current MySQL 8 does not provide the old query cache, so do not add removed query_cache settings. MariaDB is different: inspect version/build and workload; its query cache is normally disabled by default and is not a substitute for indexing or application caching.
- Queries and contention: inspect slow queries, plans, locks and connection limits across the network. Control logging overhead and protect potentially sensitive logged data.
When WooCommerce or other heavy plugins join the network, you can reuse many of the ideas from our WooCommerce MySQL/InnoDB tuning checklist.
Object Caching with Redis or Memcached
A persistent object cache can reduce repeated database work when the workload and integration benefit from it. WordPress’s default object cache lasts for one request; cross-request caching needs a supported backend and drop-in. Measure benefit and correctness rather than treating Redis or Memcached as mandatory for every network.
- Use a maintained Multisite-compatible object-cache integration with Redis or Memcached where appropriate.
- Verify per-site keys and intentionally shared global groups; do not assume a single fixed prefix is sufficient to distinguish every site or another WordPress installation.
- Restrict network access and credentials; logical key names are not a security boundary against an actor who can read the whole backend.
- Size memory and eviction behavior, test invalidation and cache failure, and monitor hits/misses. Object caching does not automatically supply shared application sessions or durable order storage.
Our comparison of Redis vs Memcached for WordPress explains how to choose and tune TTL and eviction for busy sites, which translates directly to Multisite setups.
Full‑Page Caching: Nginx, Varnish, or LiteSpeed
Shared page caching can reduce PHP work for reusable public responses. It must preserve site and user boundaries. Applicable options include:
- Nginx FastCGI cache in front of PHP‑FPM.
- Varnish as a dedicated caching proxy.
- LiteSpeed Cache if you run LiteSpeed/OpenLiteSpeed.
The WordPress and WooCommerce page-cache guide provides stack-specific context. Define cache keys using the trusted hostname, path and every relevant representation input, such as query, scheme, locale or currency. Bypass login, administration, accounts, carts, checkout, authenticated requests and other personalized responses; respect private/no-store and session-cookie behavior. Verify separate users and sites, invalidation and cold-cache behavior. Host plus path alone is not a universal safe cache key.
Microcaching for PHP Bursts
A short cache lifetime does not make private content safe to share. An illustrative 1–5 second microcache may help repeated public blog or landing-page responses, subject to the same cache keys, exclusions and invalidation rules as longer caching. Do not use shared microcaching for logged-in dashboards, carts or personalized pages. The Nginx microcaching guide provides further context; validate the actual request and cookie behavior.
CDN and Edge Caching
A CDN can bring reusable assets closer to users and reduce origin load, depending on geography, cacheability and hit rate. Confirm support and certificate routing for every mapped domain:
- Configure each accepted domain’s origin, TLS and cache behavior; do not assume adding one domain enables the rest.
- Use appropriate
Cache-Controland versioned asset URLs. Long immutable caching fits files whose URL changes with content. - Bypass personalized and authenticated HTML, accounts, carts and checkout across all caching layers. Preserve relevant cookies, variation and purge behavior.
- Test cache misses and origin capacity; edge caching does not eliminate the need for a working origin or secure direct-access policy.
If you want a deeper playbook on headers and cache behaviour, see our guide on cache-control, ETag, and asset fingerprinting.
Schedule Due Tasks for Every Network Site
WordPress checks scheduled work through request-triggered WP-Cron; it is not a continuously running scheduler and does not execute every task on every page view. A system scheduler can make triggering independent of visitors, but Multisite requires deliberate coverage of each site’s event queue:
- Inventory all active sites and the deadlines of their tasks. Calling the main site’s
wp-cron.phpalone does not establish that every subsite’s due events ran. - Configure an authorized scheduler to trigger the appropriate
wp-cron.phpsite context or use a supported WP-CLI workflow selecting each site explicitly. Check the installed tool’s options; do not assume a network-wide option exists in every stable release. - Run with the correct application user, path and PHP environment. Account for overlap, long-running callbacks, failures and newly added sites; monitor successful completion, not only process launch.
- After verifying the replacement scheduler for every site, disable visitor-triggered spawning through the supported WordPress setting. Choose a frequency from actual deadlines; five minutes is an example, not a guarantee of timely execution.
The WordPress system-cron guide explains the scheduling transition. In Multisite, adapt it to all site contexts and continue to monitor overdue events and scheduler failures. Critical application queues, such as store background jobs, may have their own scheduling requirements; a cron entry alone does not prove those jobs completed.
Security and Maintenance for Multisite on a VPS
A Multisite network concentrates many sites into one platform. This is operationally efficient but also raises the stakes: a misconfiguration, vulnerable plugin, or compromised admin account can affect many brands at once. A few disciplines go a long way.
WordPress Hardening
At the application level:
- Use strong unique credentials and a supported 2FA integration, especially for super admins; review recovery access and stale accounts.
- Limit network-administrator privileges and verify site-specific roles. Domain mapping and separate content tables do not isolate mutually untrusted code.
- Set permissions according to ownership and execution users, disable dashboard editing where appropriate, and test any
wp-adminrestrictions against required AJAX/API and administrative workflows. - Maintain core, themes, plugins, mu-plugins and drop-ins; test shared-component updates and apply urgent security fixes promptly.
Our WordPress hardening checklist walks through concrete file permission, salt keys, XML‑RPC, UFW, and Fail2ban configurations you can apply on your VPS.
VPS-Level Security
On the VPS itself, treat the host as production‑critical infrastructure:
- Use SSH keys and appropriate network restrictions, test replacement access before disabling old methods and keep recovery access. A nondefault port only reduces some scanning noise.
- Expose only required ports through the host firewall, accounting for both IPv4 and IPv6 and any trusted proxy path.
- Keep the OS, PHP, web server and database supported and patched; restrict database/cache access.
- Monitor logs, privileged changes and alerts with a named response owner. Confirm provider management and network DDoS scope separately.
Our calm guide to securing a VPS server outlines a realistic hardening path that fits nicely around a Multisite network.
Backups and Disaster Recovery
Because Multisite concentrates many sites into one database and file tree, backups are non‑negotiable:
- Back up the complete network database, uploads, custom code and required configuration/credentials with an application-consistent process. Identify how trusted core/plugin packages will be restored.
- Choose frequency and retention from acceptable data loss and recovery time. Daily backups may be insufficient for active stores; 7 daily, 4 weekly and 3 monthly copies are only an illustrative retention plan.
- Keep an independent offsite copy with suitable access separation and test full-network recovery in a restricted environment.
- Test single-site recovery separately: shared users, network settings and plugin data complicate restoring one subsite. Do not overwrite the live whole-network database merely to restore one site’s posts.
- During restore tests, control real email, payment, webhook and scheduled side effects; document how new production writes will be preserved during recovery or rollback.
Our guide to the 3‑2‑1 backup strategy explains how to structure backups on VPS environments so a single failure doesn’t wipe out your entire network.
A Repeatable Multisite Deployment Checklist
A Multisite rollout coordinates domains, TLS certificates, shared code and data, caching and operational responsibility. Keep a checklist for each new site rather than assuming that adding a Network Admin entry makes DNS, HTTPS, caches and scheduled jobs ready.
Choose a compatible network structure and measured VPS capacity, then establish a tested single-site HTTPS installation before enabling the network. Prepare authorized domain routing and certificates before switching site URLs. Configure privacy-safe caching, tasks for every site, restricted administration and tested backup restoration. Confirm DNS/data cutover, login and redirects when migrating existing content, and monitor after launch.
Use Multisite when shared administration and compatible software fit the sites’ ownership and maintenance needs. Choose separate installations or stronger isolation where those assumptions do not hold. When requesting DCHost or another provider’s help, specify resource, access, certificate and management requirements and confirm which tasks are included and priced separately. A documented, tested configuration supports predictable operations; it does not guarantee security, capacity or compliance for every tenant.





