服务器配置对了,一台顶三台
很多人以为部署多个网站必须购买多台服务器。事实上,在不牺牲性能和安全的前提下,一台高效配置的服务器就能承载多个独立网站,既节省成本又提高运维效率。
关键在于掌握 Nginx 的多站点部署策略,合理划分目录、端口、证书与资源隔离。
本文将带你从原理到实战,逐步搭建一个支持多域名、多站点、HTTPS + 独立目录的网站群。
一、你为什么要“一台多站”?
场景 | 需求逻辑 |
---|---|
建多个独立博客/产品官网 | 每个网站一个域名,但共用主机资源 |
做站群 / 业务拆分 | 不希望多个网站互相影响 |
预算有限 | 用一台2核2G服务器跑多个低负载站点 |
运维方便 | 同一套环境维护,资源集中管理 |
✅ 前提:你的服务器有独立公网IP,Nginx 已部署,拥有多个已备案或可解析域名。
二、核心架构与工作原理
Nginx 的多站部署基于“Server Block(虚拟主机)”机制:
- 每一个站点对应一个
server{}
配置块; - 根据访问的域名(
server_name
)路由到对应站点; - 每个站点有独立的目录、日志、SSL证书等;
bash/etc/nginx/sites-available/
├── site1.conf ← www.site1.com
├── site2.conf ← blog.site2.net
/etc/nginx/sites-enabled/
└── 软链接到上面文件
三、配置前的准备工作
✅ 1. DNS 解析设置
为每个域名添加 A 记录 → 服务器公网IP
域名 | 类型 | 记录值 |
---|---|---|
www.site1.com | A | 123.123.123.123 |
blog.site2.net | A | 123.123.123.123 |
✅ 2. 站点目录规划
bash/var/www/
├── site1.com/
│ ├── public_html/
│ └── logs/
├── site2.net/
│ ├── public_html/
│ └── logs/
📌 建议每站独立目录,方便权限与备份隔离。
四、Nginx 多站点配置实战
以两个网站为例:www.site1.com
和 blog.site2.net
✅ 配置文件:/etc/nginx/sites-available/site1.conf
nginxserver {
listen 80;
server_name www.site1.com;
root /var/www/site1.com/public_html;
index index.html index.php;
access_log /var/www/site1.com/logs/access.log;
error_log /var/www/site1.com/logs/error.log;
location / {
try_files $uri $uri/ =404;
}
}
✅ 配置文件:/etc/nginx/sites-available/site2.conf
nginxserver {
listen 80;
server_name blog.site2.net;
root /var/www/site2.net/public_html;
index index.html index.php;
access_log /var/www/site2.net/logs/access.log;
error_log /var/www/site2.net/logs/error.log;
location / {
try_files $uri $uri/ =404;
}
}
✅ 启用配置:
bashsudo ln -s /etc/nginx/sites-available/site1.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site2.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
五、开启 HTTPS(Let’s Encrypt)
使用 Certbot 自动签发 HTTPS 证书:
bashsudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx
- 选择站点域名;
- 自动添加 SSL 配置;
- 自动设置重定向 HTTP → HTTPS;
六、常见问题排查
问题 | 原因/解决办法 |
---|---|
打开网站显示默认页 | 未启用对应配置文件,或 server_name 设置错误 |
SSL 证书错误或失效 | 没有为每个域名单独申请证书,或未续期 |
网站互相干扰 | 目录未分隔,或多个站点使用同一 root 路径 |
80端口已被占用 | 检查是否已有其他程序监听 :80 (如Apache) |
七、高级建议:进阶运维实践
操作 | 建议 |
---|---|
自动备份站点内容 | 使用 rsync + cron 定期备份至其他目录/远端 |
站点限速防刷 | 配置 limit_conn / limit_req 模块 |
多PHP版本共存 | 使用 php-fpm pool 分离不同站点的PHP环境 |
文件权限隔离 | 每个站点设不同Linux用户/组 |
SSL自动续期 | Certbot 配合 cron.daily 脚本或 systemd 计划 |
八、一台多站,不只是节省服务器,更是架构能力的体现
在服务器资源紧张或预算有限的情况下,合理利用 Nginx 的多站点配置,不仅能大幅提升资源使用效率,还能锻炼出系统架构思维:如何划分边界、如何权限控制、如何统一又分离。
部署多站点的关键并不是“堆网站”,而是让每个站点独立运行、互不干扰、稳定可扩展。