1.
准备工作与前提
- 购买新加坡云服务器(例如 Ubuntu 22.04),并确认公网IP。
- 已有域名且能管理DNS(例如在域名注册商控制面板或Cloud DNS)。
- 安装常用软件:sudo apt update && sudo apt install nginx certbot -y(或安装apache2、certbot-apache)。
2.
规划多站点目录结构
- 建议目录:/var/www/example.com 和 /var/www/sub.example.com,每站点独立。
- 权限设置:sudo mkdir -p /var/www/example.com/html && sudo chown -R $USER:$USER /var/www/example.com && sudo chmod -R 755 /var/www。
3.
在DNS添加子域名记录
- 登录域名DNS控制台,新增A记录:主机记录填写子域(如 sub),记录类型 A,值填写服务器公网IP。
- 如果要大量子域可使用泛解析(*.example.com 指向IP),注意安全与证书影响。
4.
Nginx 单站/多站配置(创建 server block)
- 创建配置文件 /etc/nginx/sites-available/example.com:示例 server 块中 server_name example.com www.example.com; root /var/www/example.com/html; index index.html index.php;。
- 为子域创建另一个文件 /etc/nginx/sites-available/sub.example.com,server_name 填写 sub.example.com,root 指向对应目录。
- 启用站点:sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/,然后 sudo nginx -t && sudo systemctl reload nginx。
5.
Apache 虚拟主机配置(若使用 Apache)
- 在 /etc/apache2/sites-available/ 创建 example.com.conf:包含
ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com/html 。
- 为子域创建 sub.example.com.conf,启用站点 sudo a2ensite example.com.conf && sudo systemctl reload apache2。
6.
配置 SSL(Let's Encrypt)为每个域名/子域名颁发证书
- 使用 certbot:sudo certbot --nginx -d example.com -d www.example.com(若用Nginx)。
- 为子域单独申请:sudo certbot --nginx -d sub.example.com。若使用Apache,改为 --apache。
- 验证自动续期:sudo systemctl status certbot.timer,或模拟续期 sudo certbot renew --dry-run。
7.
防火墙与安全组设置
- Ubuntu 使用 UFW:sudo ufw allow 'Nginx Full'(或 'Apache Full'),sudo ufw enable。
- 云供应商控制台(例如新加坡节点的安全组)也要放通80、443端口。
8.
测试访问与日志排查
- 本地 hosts 文件临时映射测试:在本地 /etc/hosts 添加 公网IP example.com。
- 查看 Nginx 日志 /var/log/nginx/error.log 和 access.log,Apache 日志在 /var/log/apache2/。
9.
常见问题与解决步骤
- DNS 未生效:检查 TTL,使用 dig +short sub.example.com 确认解析到IP。
- 证书申请失败:确认域名解析正确、80端口开放、Nginx配置未占用80/443。
- 权限问题:确保 web 目录权限和所有权正确,www-data(或运行用户)有读取权限。
10.
优化与运维建议
- 若托管多个站点建议使用独立用户与目录,或容器化(Docker)隔离。
- 定期自动备份 /etc/nginx、/etc/apache2、/var/www 与数据库;监控磁盘与证书到期。
11.
问:如何为大量子域自动化证书申请与虚拟主机创建?
- 答:可使用脚本批量生成 vhost 文件并调用 certbot 自动申请。示例流程:1)读取子域列表;2)为每个子域生成 /var/www/ 子目录与 nginx 配置并 ln 到 sites-enabled;3)reload nginx;4)批量运行 certbot certonly/--nginx。也可结合 Ansible、Terraform 做完整自动化。
12.
问:新加坡云服务器与其他地区有何差别需要注意?
- 答:配置流程相同,主要差别在网络延迟与备案政策。选新加坡节点优势是面向东南亚访问速度更优;但仍需检查云厂商默认安全组与控制面板策略,按上述步骤开放端口并设置防火墙。
13.
问:部署完后如何验证多站点配置完全正确?
- 答:逐个子域访问并检查:页面能正常加载、证书链无错误(浏览器锁图标)、nginx/apache 无报错日志、使用 curl -I 子域 返回正确的 Host 与 200/301 状态码。并模拟到期和重启场景确认自动续期与服务自启动正常。
来源:多站点部署 新加坡云服务器做网站怎么做子域名与虚拟主机配置教程