一个域名可以做多少个二级网站?资深工程师教你怎么选
很多设计师转前端,或者刚接触运维的朋友,一听到“二级域名”脑子里就一片浆糊。域名服务器搞不懂,不知道一个主域名底下能挂多少个子站,更不知道怎么选才不浪费资源。别急,今天咱们不整虚的,直接掰开了揉碎了讲清楚。
需求分析:到底要开几个子站?
先别急着动手配置,搞清楚你的业务场景是关键。
1. 品牌隔离与业务区分
很多大厂喜欢用二级域名来区分业务线。比如 taobao.com 是主站,tmall.com 是天猫,虽然它们可能属于同一个集团,但在SEO和用户体验上,二级域名(或顶级域名)能起到很好的隔离作用。
- 适用场景:你的公司既有B2B官网,又有C2C商城,还有独立的博客社区。
- 建议:如果业务差异巨大,建议分开;如果业务关联紧密,用二级域名更利于权重传递。
2. SEO权重分散 vs 集中 这是一个经典争议。
- 集中派:所有页面都挂在主域名下,权重像滚雪球一样越滚越大。
- 分散派:不同业务用不同二级域名,避免内部竞争,且单个站点更垂直。
- 真相:对于中小企业,主域名权重集中通常更优。除非你的子站流量巨大,且与主站业务毫无交集,否则不要轻易拆分。
3. 开发测试环境隔离 这是开发者最实用的场景。
dev.yourdomain.com:开发环境test.yourdomain.com:测试环境prod.yourdomain.com:生产环境- 优势:URL清晰,方便前端调试,避免测试数据污染生产库。
4. 多语言或多地区站点
en.yourdomain.com:英文版jp.yourdomain.com:日文版- 注意:如果是面向海外,二级域名比子路径(如
/en/)在本地化信任度上更高。
核心结论:一个域名理论上可以创建无限个二级域名,只要你的DNS解析支持,服务器端口不冲突,硬盘空间够。但实际业务中,建议控制在 5-10个 核心业务模块以内,再多就乱套了。
环境准备:工欲善其事
在华北地区做建站,网络环境相对复杂,尤其是备案和CDN接入,要特别注意。
1. 域名与备案状态
- 国内服务器:必须完成ICP备案。二级域名不需要单独备案,只要主域名备案通过,
www.yourdomain.com和blog.yourdomain.com都可以直接使用。 - 国外服务器:无需备案,但访问速度可能受限,建议搭配CDN。
2. 服务器配置
- Web服务器:Nginx 是目前主流选择,高性能、低资源占用。
- 端口:默认80(HTTP)和443(HTTPS)。如果要在同一台机器上跑多个二级域名,不需要不同端口,Nginx 支持基于域名的虚拟主机。
- SSL证书:
- 单域名证书:每个二级域名都需要一张证书,麻烦且贵。
- 通配符证书(Wildcard):
*.yourdomain.com,一张证书覆盖所有二级域名。强烈推荐。 - 多域名证书(SAN):如果只开几个固定的二级域名,SAN证书也够用。
3. 域名解析(DNS) 你需要登录你的域名注册商(如阿里云、腾讯云、GoDaddy)控制台,添加A记录或CNAME记录。
- A记录:指向IP地址。
- CNAME记录:指向另一个域名(常用于CDN或第三方服务)。
核心步骤:从零到一搭建多站点
假设我们要在一台 Nginx 服务器上,部署两个二级站点:
main.yourdomain.com:主站api.yourdomain.com:接口站
第一步:配置DNS解析 在域名控制台添加两条A记录:
- 主机记录:
main,记录值:你的服务器公网IP - 主机记录:
api,记录值:你的服务器公网IP
等待DNS生效(通常5分钟到24小时,华北地区通常较快)。
第二步:准备网站目录 在服务器上创建两个独立的根目录,确保文件隔离,避免权限混乱。
# 创建主站目录
mkdir -p /var/www/html/main# 创建API站目录
mkdir -p /var/www/html/api# 添加一个简单的测试页面
echo "<h1>Main Site</h1>" > /var/www/html/main/index.html
echo "<h1>API Site</h1>" > /var/www/html/api/index.html
第三步:安装 Nginx 如果是 CentOS 或 Ubuntu,直接通过包管理器安装。
# Ubuntu/Debian
sudo apt update
sudo apt install nginx# CentOS/RHEL
sudo yum install nginx
第四步:配置 Nginx 虚拟主机
这是最关键的一步。Nginx 的配置文件通常位于 /etc/nginx/nginx.conf,但为了管理方便,我们建议将站点配置放在 /etc/nginx/sites-available/ 目录(Ubuntu)或 /etc/nginx/conf.d/ 目录(CentOS)。
我们创建一个新的配置文件 /etc/nginx/conf.d/multi-site.conf。
注意:删除默认的 default.conf 或修改其 listen 指令,避免冲突。
代码/配置示例:Nginx 实战
下面是两个完整的、可运行的 Nginx 配置示例。请根据你的实际路径调整 root 和 server_name。
示例 1:主站配置(支持HTTPS)
server {listen 80;server_name main.yourdomain.com;# 强制跳转HTTPSreturn 301 https://$server_name$request_uri;
}server {listen 443 ssl;server_name main.yourdomain.com;# 使用通配符证书ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers HIGH:!aNULL:!MD5;# 网站根目录root /var/www/html/main;index index.html index.htm;# 日志配置access_log /var/log/nginx/main_access.log;error_log /var/log/nginx/main_error.log;location / {try_files $uri $uri/ =404;}
}
示例 2:API站配置(仅HTTP,用于内部调用或测试)
server {listen 80;server_name api.yourdomain.com;# API站通常不需要复杂的SSL,除非涉及敏感数据# 如果需要HTTPS,请参照主站配置添加ssl部分root /var/www/html/api;index index.html;# 允许跨域请求(CORS),方便前端调试add_header 'Access-Control-Allow-Origin' '*' always;add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept, Authorization' always;location / {# 如果是Node.js或PHP后端,这里需要配置proxy_pass# 例如:proxy_pass http://127.0.0.1:3000;try_files $uri $uri/ =404;}
}
部署命令:
# 1. 测试配置语法
sudo nginx -t# 2. 如果显示 syntax is ok, test is successful,重载配置
sudo systemctl reload nginx# 3. 检查状态
sudo systemctl status nginx
前端工程师特别提示:Nginx 反向代理配置
如果你是用 Vue 或 React 开发,后端接口在 Node.js (端口3000) 上,你需要这样配置 Nginx 来做反向代理:
server {listen 80;server_name api.yourdomain.com;# 将 /api 开头的请求转发给后端location /api/ {proxy_pass http://127.0.0.1:3000/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}# 静态资源直接由 Nginx 提供location / {root /var/www/html/api;try_files $uri $uri/ /index.html;}
}
常见报错:踩坑指南
在华北地区,网络波动和防火墙策略经常导致问题,以下是几个高频报错及解决方案。
1. 502 Bad Gateway
- 原因:Nginx 能启动,但无法连接到后端服务(如 Node.js, PHP-FPM)。
- 排查:
- 检查后端服务是否运行:
ps -ef | grep node - 检查后端端口是否监听:
netstat -tlnp | grep 3000 - 检查 Nginx 配置中的
proxy_pass地址和端口是否正确。 - 华北特例:检查安全组(阿里云/腾讯云控制台)是否放行了后端端口(虽然通常内网通信不需要,但有些架构会走公网)。
- 检查后端服务是否运行:
2. 413 Request Entity Too Large
- 原因:上传的文件超过了 Nginx 默认的 1MB 限制。
- 解决:在
server块或location块中添加:
修改后重载 Nginx。client_max_body_size 10M;
3. SSL 证书错误 NET::ERR_CERT_DATE_INVALID
- 原因:服务器系统时间不对,或者证书过期。
- 解决:
- 同步时间:
sudo ntpdate ntp.aliyun.com - 检查证书有效期:
openssl x509 -in /etc/letsencrypt/live/yourdomain.com/fullchain.pem -noout -dates
- 同步时间:
4. DNS 解析超时
- 原因:国内DNS服务器响应慢,或域名未生效。
- 解决:
- 使用
nslookup main.yourdomain.com测试解析速度。 - 如果解析慢,考虑将 DNS 解析服务商切换为阿里云或腾讯云的免费DNS,它们在华北地区的节点更多,速度更快。
- 使用
小结:怎么选最适合你的方案
回到最初的问题:一个域名可以做多少个二级网站? 答案是:理论上无限,实际上按需分配。
怎么选? 遵循以下原则:
- 业务隔离:业务差异大,用二级域名;业务相关,用子目录。
- SEO策略:中小站用主域名集中权重;大站用二级域名分散风险。
- 技术实现:Nginx 虚拟主机是标配,通配符SSL证书是必备。
- 备案合规:国内服务器务必确认主域名已备案,二级域名无需单独备案。
给设计师转前端的建议:
不要只盯着像素,要理解服务器如何处理请求。当你明白 Nginx 是如何根据 Host 头来区分不同二级域名时,你就真正跨过了“前端”到“全栈”的第一道门槛。
你踩过哪些建站的坑?评论区交流,特别是关于 DNS 解析延迟和 SSL 证书自动续期的问题,欢迎分享你的经验。