一台云服务器建多个网站

一台云服务器可通过配置多个虚拟主机(如Nginx/Apache的Server BlockVirtualHost)来托管多个网站,共享同一IP和资源;配合不同域名、端口或路径实现访问隔离,并通过反向代理SSL证书管理及合理资源分配保障站点稳定运行,显著降低运维成本与硬件投入。

一台云服务器,轻松托管多个网站——高效、省钱、不踩坑的实战指南

创业初期或个人项目开发中,很多人误以为“一个网站 = 一台服务器”,结果每月多花几百元租用多台云主机一台云服务器完全能稳定运行5个、10个甚至几十个中小型网站——关键不在硬件堆砌,而在合理规划与规范配置。

这并非理论空谈,而是经过千百次线上验证的轻量运维实践,本文将从原理、实操、避坑三方面,讲清如何用一台主流配置(如2核4G+100GB SSD)的云服务器,安全、高效、可扩展地承载多个独立域名网站。

为什么一台服务器能跑多个网站?
心在于“虚拟主机”(Virtual Host)机制,无论是Nginx还是Apache,都支持基于域名的请求分流:当用户访问 www.sitea.com 或 blog.siteb.net 时,服务器通过HTTP请求头中的Host字段精准识别目标站点,并返回对应网站的文件与配置,这就像一栋写字楼里的不同公司——共用同一栋楼(服务器资源),却各自拥有独立门牌(域名)、前台(入口文件)和办公区(网站根目录)。

四步完成多站部署(以Ubuntu+Nginx+PHP为例)

  1. 统一规划,隔离先行
    为每个网站创建独立用户(如 sudo adduser sitea)及专属目录(/var/www/sitea/),禁用Shell登录权限,杜绝跨站读写风险数据库亦按站划分:MySQL -e "CREATE DATABASE sitea_db CHARACTER SET utf8mb4;",并授予最小权限账户。

  2. 域名解析SSL自动化
    将各域名A记录指向服务器公网IP后,使用Certbot一键申请泛域名或单域名证书,推荐为每个站点单独配置SSL(而非共用证书),便于后续独立更新与审计,Nginx配置中启用HTTP/2与OCSP装订,提升首屏加载速度

  3. 资源分级,防止单点拖垮
    启用PHP-FPM进程池隔离:为sitea.conf设置 pm.max_children=15,siteb.conf设为10,并绑定不同Unix socket路径,配合systemd对各站点服务做内存限制(MemoryMax=512M),避免某个WordPress插件异常导致整机卡死。

  4. 日志与监控轻量化落地
    关闭默认access_log全局记录,改为按站启用带时间戳的压缩日志(log_format main '$time_iso8601…’),每日自动轮转+7天自动清理,再搭配htop + netdata轻量监控面板,实时查看CPU、内存、连接数分布,一眼识别哪个站点突发流量

必须避开的三大认知陷阱
✘ 误区一:“只要硬盘够大,网站随便加”
错!瓶颈常在并发连接数与内存,未优化的WordPress站点每访客平均占用30–50MB内存,20个未调优站点极易触发OOM Killer,务必精简主题、停用冗余插件、启用OPcache与Redis对象缓存

✘ 误区二:“共用数据库省事又方便”
极危险!一旦某站被注入,攻击者可借同库权限横向渗透其他站点,曾有案例:某博客因SQL注入泄露了同库中电商站的支付密钥,务必坚持“一库一用户一权限”。

✘ 误区三:“不用备案就不能上线?”
政策明确:境内服务器托管面向公众的网站,无论几个,均需完成ICP备案;但若仅用于测试、内网管理、或静态展示(无交互功能),且域名未指向国内解析,可暂不备案——需自行评估法律边界。

进阶建议:让多站管理更可持续

  • 使用Docker Compose编排各站环境PHP版本/扩展可差异化),升级互不干扰;
  • 配置Git钩子实现代码推送即自动部署,告别手动scp;
  • 每站启用独立Cloudflare免费版,隐藏真实IP、过滤恶意请求、加速静态资源——相当于给每个网站配了“数字保安”。

最后提醒:多站共存≠无限叠加,当单站日均UV超5000或涉及高频数据库写入(如订单系统),建议及时拆分至专用实例,技术的价值,从来不是堆砌复杂度,而是用最简架构,承载最大可能性。

一台云服务器,不是容器,而是舞台——你负责编排,它稳稳托住。