{"id":957,"date":"2026-08-14T23:44:54","date_gmt":"2026-08-14T23:44:54","guid":{"rendered":"https:\/\/affordablevpsserver.com\/blog\/?p=957"},"modified":"2026-08-14T23:44:54","modified_gmt":"2026-08-14T23:44:54","slug":"multiple-websites-one-budget-vps-nginx-php-fpm","status":"publish","type":"post","link":"https:\/\/affordablevpsserver.com\/blog\/multiple-websites-one-budget-vps-nginx-php-fpm\/","title":{"rendered":"Hosting Multiple Websites on One Budget VPS: Nginx Server Blocks, PHP-FPM Pools, and RAM Planning"},"content":{"rendered":"<p class=\"wp-block-paragraph\">One budget VPS can comfortably host several small websites \u2014 a personal blog, a client portfolio, a wiki, and a status page \u2014 for the price of a single $6\u2013$10\/month plan. The catch is isolation. If two sites share one server without separation, one compromised script or one runaway process can take down everything. This guide covers how to structure nginx and PHP-FPM so multiple sites share the hardware safely, and how much RAM to budget per site.<\/p><h2 class=\"wp-block-heading\">When It Makes Sense to Share a VPS<\/h2><p class=\"wp-block-paragraph\">Sharing one VPS across sites makes financial sense when the sites are low-traffic and non-critical: personal projects, staging environments, small business brochures, and internal tools. It stops making sense when a site becomes a resource hog \u2014 sustained high traffic, heavy cron jobs, or large media libraries \u2014 because one tenant then degrades the others. The general rule: if every site on the box fits in a single shared-hosting account, they fit on one small VPS with proper separation.<\/p><h2 class=\"wp-block-heading\">The Three Layers of Isolation<\/h2><p class=\"wp-block-paragraph\">A secure multi-site setup on a budget VPS uses three layers of separation:<\/p><ul class=\"wp-block-list\"><li><strong>Nginx server blocks:<\/strong> one <code>server<\/code> block per domain, each pointing at its own document root and its own log files.<\/li><li><strong>Separate PHP-FPM pools:<\/strong> one pool per site with its own user, socket, and memory limits, so a runaway script in one site cannot exhaust the others.<\/li><li><strong>Separate filesystem users:<\/strong> each site runs as its own system user with permissions limited to its own directory.<\/li><\/ul><p class=\"wp-block-paragraph\">This is the same isolation model shared hosts use, just on a smaller scale \u2014 and it costs nothing extra beyond the setup time.<\/p><h2 class=\"wp-block-heading\">How Much RAM Per Site<\/h2><p class=\"wp-block-paragraph\">Memory is the resource that runs out first on a shared VPS. PHP-FPM workers are the biggest consumer: each worker reserves 30\u201360 MB, and a WordPress site commonly needs 4\u20136 workers under load. The table below shows realistic budgets for a typical setup with nginx and a page cache enabled.<\/p><figure class=\"wp-block-table\"><table><thead><tr><th>Sites on the VPS<\/th><th>Recommended RAM<\/th><th>Recommended vCPU<\/th><th>Typical plan price<\/th><\/tr><\/thead><tbody><tr><td>1\u20132 light sites (static or cached)<\/td><td>1 GB<\/td><td>1<\/td><td>$5\u2013$7\/mo<\/td><\/tr><tr><td>2\u20134 sites, some dynamic (WordPress)<\/td><td>2 GB<\/td><td>2<\/td><td>$10\u2013$14\/mo<\/td><\/tr><tr><td>4\u20138 sites or mixed workloads<\/td><td>4 GB<\/td><td>2\u20134<\/td><td>$18\u2013$25\/mo<\/td><\/tr><\/tbody><\/table><\/figure><p class=\"wp-block-paragraph\">Add a page cache (nginx fastcgi_cache or a small Redis instance) and most requests never touch PHP at all, which stretches these budgets considerably. A cached WordPress site that serves 90% of requests from memory uses a fraction of the PHP pool capacity.<\/p><h2 class=\"wp-block-heading\">Setting Up the Pools: A Quick Walkthrough<\/h2><p class=\"wp-block-paragraph\">On Ubuntu or Debian with nginx and PHP-FPM, the setup follows the same pattern per site. Create a user, a document root, and a pool file:<\/p><ul class=\"wp-block-list\"><li>Create the site user and directory: <code>useradd -m site1<\/code>, <code>mkdir \/var\/www\/site1<\/code><\/li><li>Add a pool in <code>\/etc\/php\/8.3\/fpm\/pool.d\/site1.conf<\/code> with its own <code>listen<\/code> socket and <code>pm.max_children<\/code> limit (2\u20134 is a safe start on 1\u20132 GB RAM)<\/li><li>Add an nginx <code>server<\/code> block for the domain pointing at the site root and the site\u2019s socket<\/li><li>Set <code>open_basedir<\/code> in the pool to the site\u2019s own directory<\/li><li>Restart php-fpm and nginx, then check <code>ps aux | grep php-fpm<\/code> to confirm each site runs under its own user<\/li><\/ul><p class=\"wp-block-paragraph\">The nginx server blocks and PHP-FPM pool files are plain text configs, so the whole setup costs nothing beyond the server itself \u2014 no control-panel license required.<\/p><h2 class=\"wp-block-heading\">What to Watch For<\/h2><p class=\"wp-block-paragraph\">Monitor memory headroom weekly with <code>free -m<\/code> and check per-pool usage. If one site routinely consumes its entire pool, that site is the candidate for its own VPS or a caching upgrade. Backups also need a plan: keep each site\u2019s files and database in its own backup job, and store copies off-server so a compromised box does not take the backups with it.<\/p><h2 class=\"wp-block-heading\">A Realistic Example: Two WordPress Sites on 2 GB<\/h2><p class=\"wp-block-paragraph\">A 2 GB \/ 2 vCPU VPS at $10\u2013$14\/month can run two WordPress sites with room to spare if you plan the numbers. Each site gets a PHP-FPM pool capped at two workers with a 128 MB per-request limit \u2014 that is roughly 512 MB of worst-case PHP usage for both. MariaDB with a 256 MB buffer pool adds another ~300 MB. nginx, the OS, and a file-based page cache sit at about 150\u2013200 MB. Total worst case: around 1.2 GB, leaving 800 MB of headroom for traffic spikes, cron jobs, and a nightly backup. The same math with three or four static or cached sites fits comfortably on 1 GB.<\/p><p class=\"wp-block-paragraph\">The failure mode to avoid is unbounded pools. A WordPress plugin that leaks memory in a single pool with no cap can consume the whole box. Setting <code>pm.max_children<\/code> and <code>request_terminate_timeout<\/code> on every pool turns a server-wide outage into a single-site slowdown \u2014 exactly the isolation you are paying for.<\/p><h2 class=\"wp-block-heading\">Certificates, Cron, and Other Shared Services<\/h2><p class=\"wp-block-paragraph\">Three shared services need deliberate planning in a multi-site setup. First, TLS certificates: use a single certbot instance with one nginx snippet per site rather than one cron job per site \u2014 it simplifies renewal and avoids certificate conflicts. Second, cron jobs: give each site its own crontab under its own user, and stagger heavy jobs (backups, cache warming, log rotation) so they do not all fire at 3 AM and spike memory together. Third, mail: if you send transactional mail from multiple sites, route each through its own authenticated sender or a single properly configured relay \u2014 shared mail configurations are a common source of deliverability problems.<\/p><p class=\"wp-block-paragraph\">If you are still choosing a host for your first multi-site setup, compare entry-level plans on our <a href=\"https:\/\/affordablevpsserver.com\/#providers\">budget VPS comparison table<\/a> \u2014 look for 2 GB RAM plans in the $10\u2013$14 range, which give you room to run several sites without upgrading in month one.<\/p>","protected":false},"excerpt":{"rendered":"<p>One budget VPS can comfortably host several small websites \u2014 a personal blog, a client portfolio, a wiki, and a status page \u2014 for the price of a single $6\u2013$10\/month plan. The catch is isolation. If two sites share one server without separation, one compromised script or one runaway process can take down everything. This [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":0,"footnotes":""},"categories":[2],"tags":[],"class_list":["post-957","post","type-post","status-publish","format-standard","hentry","category-budget-vps-guides"],"blocksy_meta":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Hosting Multiple Websites on One Budget VPS: Nginx Server Blocks, PHP-FPM Pools, and RAM Planning - Affordable VPS Server Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/affordablevpsserver.com\/blog\/multiple-websites-one-budget-vps-nginx-php-fpm\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hosting Multiple Websites on One Budget VPS: Nginx Server Blocks, PHP-FPM Pools, and RAM Planning\" \/>\n<meta property=\"og:description\" content=\"Hosting Multiple Websites on One Budget VPS: Nginx Server Blocks, PHP-FPM Pools, and RAM Planning\" \/>\n<meta property=\"og:url\" content=\"https:\/\/affordablevpsserver.com\/blog\/multiple-websites-one-budget-vps-nginx-php-fpm\/\" \/>\n<meta property=\"og:site_name\" content=\"Affordable VPS Server Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-14T23:44:54+00:00\" \/>\n<meta name=\"author\" content=\"Affordable-Vps-Server-Author\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Affordable-Vps-Server-Author\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/multiple-websites-one-budget-vps-nginx-php-fpm\/\",\"url\":\"https:\/\/affordablevpsserver.com\/blog\/multiple-websites-one-budget-vps-nginx-php-fpm\/\",\"name\":\"Hosting Multiple Websites on One Budget VPS: Nginx Server Blocks, PHP-FPM Pools, and RAM Planning - Affordable VPS Server Blog\",\"isPartOf\":{\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/#website\"},\"datePublished\":\"2026-08-14T23:44:54+00:00\",\"author\":{\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/#\/schema\/person\/685a02c93a3c45030f7427ec928b0df7\"},\"breadcrumb\":{\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/multiple-websites-one-budget-vps-nginx-php-fpm\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/affordablevpsserver.com\/blog\/multiple-websites-one-budget-vps-nginx-php-fpm\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/multiple-websites-one-budget-vps-nginx-php-fpm\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/affordablevpsserver.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hosting Multiple Websites on One Budget VPS: Nginx Server Blocks, PHP-FPM Pools, and RAM Planning\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/#website\",\"url\":\"https:\/\/affordablevpsserver.com\/blog\/\",\"name\":\"Affordable VPS Server Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/affordablevpsserver.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/#\/schema\/person\/685a02c93a3c45030f7427ec928b0df7\",\"name\":\"Affordable-Vps-Server-Author\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8fa20973a7dd04621d396c26ba26b5c5e6c19595583335121958527393f6f95e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8fa20973a7dd04621d396c26ba26b5c5e6c19595583335121958527393f6f95e?s=96&d=mm&r=g\",\"caption\":\"Affordable-Vps-Server-Author\"},\"sameAs\":[\"https:\/\/affordablevpsserver.com\/blog\"],\"url\":\"https:\/\/affordablevpsserver.com\/blog\/author\/affordablevpsserver\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Hosting Multiple Websites on One Budget VPS: Nginx Server Blocks, PHP-FPM Pools, and RAM Planning - Affordable VPS Server Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/affordablevpsserver.com\/blog\/multiple-websites-one-budget-vps-nginx-php-fpm\/","og_locale":"en_US","og_type":"article","og_title":"Hosting Multiple Websites on One Budget VPS: Nginx Server Blocks, PHP-FPM Pools, and RAM Planning","og_description":"Hosting Multiple Websites on One Budget VPS: Nginx Server Blocks, PHP-FPM Pools, and RAM Planning","og_url":"https:\/\/affordablevpsserver.com\/blog\/multiple-websites-one-budget-vps-nginx-php-fpm\/","og_site_name":"Affordable VPS Server Blog","article_published_time":"2026-08-14T23:44:54+00:00","author":"Affordable-Vps-Server-Author","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Affordable-Vps-Server-Author","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/affordablevpsserver.com\/blog\/multiple-websites-one-budget-vps-nginx-php-fpm\/","url":"https:\/\/affordablevpsserver.com\/blog\/multiple-websites-one-budget-vps-nginx-php-fpm\/","name":"Hosting Multiple Websites on One Budget VPS: Nginx Server Blocks, PHP-FPM Pools, and RAM Planning - Affordable VPS Server Blog","isPartOf":{"@id":"https:\/\/affordablevpsserver.com\/blog\/#website"},"datePublished":"2026-08-14T23:44:54+00:00","author":{"@id":"https:\/\/affordablevpsserver.com\/blog\/#\/schema\/person\/685a02c93a3c45030f7427ec928b0df7"},"breadcrumb":{"@id":"https:\/\/affordablevpsserver.com\/blog\/multiple-websites-one-budget-vps-nginx-php-fpm\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/affordablevpsserver.com\/blog\/multiple-websites-one-budget-vps-nginx-php-fpm\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/affordablevpsserver.com\/blog\/multiple-websites-one-budget-vps-nginx-php-fpm\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/affordablevpsserver.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Hosting Multiple Websites on One Budget VPS: Nginx Server Blocks, PHP-FPM Pools, and RAM Planning"}]},{"@type":"WebSite","@id":"https:\/\/affordablevpsserver.com\/blog\/#website","url":"https:\/\/affordablevpsserver.com\/blog\/","name":"Affordable VPS Server Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/affordablevpsserver.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/affordablevpsserver.com\/blog\/#\/schema\/person\/685a02c93a3c45030f7427ec928b0df7","name":"Affordable-Vps-Server-Author","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/affordablevpsserver.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8fa20973a7dd04621d396c26ba26b5c5e6c19595583335121958527393f6f95e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8fa20973a7dd04621d396c26ba26b5c5e6c19595583335121958527393f6f95e?s=96&d=mm&r=g","caption":"Affordable-Vps-Server-Author"},"sameAs":["https:\/\/affordablevpsserver.com\/blog"],"url":"https:\/\/affordablevpsserver.com\/blog\/author\/affordablevpsserver\/"}]}},"_links":{"self":[{"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/posts\/957","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/comments?post=957"}],"version-history":[{"count":1,"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/posts\/957\/revisions"}],"predecessor-version":[{"id":960,"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/posts\/957\/revisions\/960"}],"wp:attachment":[{"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/media?parent=957"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/categories?post=957"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/tags?post=957"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}