1. 什么是二级域名?为什么需要它?
想象一下你有一栋大楼(顶级域名test.com),每个楼层需要独立门牌号(二级域名blog.test.com)。二级域名就是在主域名前添加前缀形成的子地址,它能帮你实现:
- 业务隔离:电商平台用shop.test.com,客服系统用support.test.com
- 流量分流:移动端用m.test.com,PC端用www.test.com
- 测试环境:开发阶段用dev.test.com不影响生产环境
我去年给客户部署在线教育系统时,就用了course.test.com放课程主站,live.test.com做直播子站,两个服务独立运行但共用主域名SSL证书,既节省成本又便于管理。
2. 腾讯云域名解析配置实战
2.1 前期准备清单
在腾讯云控制台操作前,确保你有:
- 已备案的顶级域名(如test.com)
- 云服务器CVM实例(建议CentOS 7.6+)
- 开放80/443端口的防火墙规则
注意:国内服务器必须完成域名备案才能正常访问,这个过程通常需要3-20个工作日
2.2 解析记录设置详解
登录腾讯云控制台后:
- 进入「域名管理」→「我的域名」
- 找到目标域名点击「解析」
- 点击「添加记录」会出现关键参数:
| 参数项 | 示例值 | 作用说明 |
|---|---|---|
| 主机记录 | blog | 二级域名前缀 |
| 记录类型 | A | 将域名指向IP地址 |
| 记录值 | 192.168.1.100 | 服务器公网IP |
| TTL | 600 | 缓存更新时间(秒) |
我遇到过新手常犯的错是把「记录值」填成内网IP,这里一定要用服务器的公网IP。配置完成后,可以用ping blog.test.com测试是否解析成功。
3. Nginx服务器配置技巧
3.1 基础配置模板
用vim编辑/etc/nginx/nginx.conf时,建议先在原有配置前加#注释而不是直接删除。以下是支持多域名的配置范例:
server { listen 80; server_name test.com www.test.com; # 主域名 location / { root /var/www/main; index index.html; } } server { listen 80; server_name blog.test.com; # 二级域名 location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; } }3.2 常见问题排查
当遇到403 Forbidden错误时:
- 检查
root目录权限:chmod -R 755 /var/www - 确认SELinux状态:
setenforce 0临时关闭 - 查看Nginx错误日志:
tail -f /var/log/nginx/error.log
有次客户反馈CSS加载异常,最后发现是Nginx配置里漏了MIME类型声明,在http模块添加这行解决问题:
include /etc/nginx/mime.types;4. 应用部署与测试
4.1 端口映射实战
假设你的Node.js应用运行在3000端口,除了前面提到的proxy_pass配置,还要注意:
- 使用PM2守护进程:
npm install -g pm2 pm2 start app.js --name "blog" pm2 save pm2 startup- 配置防火墙放行端口:
firewall-cmd --zone=public --add-port=3000/tcp --permanent firewall-cmd --reload4.2 HTTPS安全升级
现在主流浏览器都强制要求HTTPS,腾讯云提供免费SSL证书:
- 在SSL证书控制台申请TrustAsia免费证书
- 下载Nginx版证书上传到服务器
- 修改Nginx配置:
server { listen 443 ssl; server_name blog.test.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; location / { proxy_pass http://localhost:3000; } }最后强制HTTP跳转HTTPS:
server { listen 80; server_name blog.test.com; return 301 https://$host$request_uri; }5. 高级玩法:自动化运维
对于需要频繁部署的场景,可以写个部署脚本deploy.sh:
#!/bin/bash git pull origin master npm install pm2 restart blog echo "Deployment completed at $(date)" >> /var/log/deploy.log然后给执行权限:
chmod +x deploy.sh配合GitHub Webhook或Jenkins就能实现代码推送后自动部署。记得在Nginx配置中添加静态文件缓存策略提升性能:
location ~* \.(jpg|css|js)$ { expires 30d; add_header Cache-Control "public"; }我在实际项目中用这套方案将页面加载时间从3.2秒降到1.4秒,效果非常明显。遇到最多的问题是文件权限冲突,建议专门创建deploy用户来运行应用进程。