一个云主机怎么挂两个网站速查手册:小白避坑指南
自己不会代码想做网站,最怕的就是搞懂服务器配置后,发现资源不够用或者怕配错了把站搞崩。很多人以为一台云主机只能跑一个站,其实只要会配置 Nginx,挂两个、三个甚至十个站都没问题。今天这篇【一个云主机怎么挂两个网站】的实操笔记,就是为了解决这个痛点。我不讲虚的理论,直接给你一份可落地的【速查手册】,哪怕你是设计师转前端,照着敲也能搞定。
项目背景与需求:为什么非要塞进一台机器
先说个真实场景。上个月帮一个做家居设计的客户做官网,他手头预算有限,不想为了测试环境多租一台服务器。他手头已经有一个线上正式站,现在想在这个云主机上再挂一个内部用的产品预览站,方便团队随时查看新版页面效果,但又不能影响正式站的访问速度。
这就引出了很多初学者的困惑:域名不同、端口相同(都是 80 或 443),怎么让服务器知道访问哪个 IP 应该返回哪个网站的内容?
这里有个核心概念要澄清:虚拟主机(Virtual Host)。在 Linux 环境下,Nginx 或 Apache 都支持通过“服务器名称”(Server Name)来区分不同的站点。简单说,就是告诉服务器:“当有人访问 A.com 时,给他看网站 A 的文件;当有人访问 B.com 时,给他看网站 B 的文件。”
在这个案例中,客户的需求很明确:
- 隔离性:两个网站代码目录完全分开,互不干扰。
- 安全性:内部预览站最好加上简单的密码保护,防止外部人员随意访问。
- 性能:不能因为多了一个站,导致正式站变慢。
很多小白朋友在这里容易踩坑,比如直接在 index.html 里改代码,结果改着改着把正式站也搞挂了。所以,建立清晰的目录结构是第一步。
技术选型:Nginx vs Apache,谁更适合你
既然要挂两个站,Web 服务器的选择至关重要。目前主流的就是 Nginx 和 Apache。
1. Nginx:高并发首选,配置简单 对于大多数中小型网站,尤其是静态资源较多的官网,Nginx 是绝对的首选。它的内存占用极低,处理并发连接的能力极强。更重要的是,Nginx 的配置逻辑非常直观,用“块”的方式组织,新手很容易理解。
- 优点:速度快、资源占用少、配置简单。
- 缺点:动态内容(如 PHP、ASP.NET)需要额外配合 FastCGI 或应用服务器。
2. Apache:老牌稳定,模块丰富 Apache 历史悠久,模块化做得非常好,几乎什么语言都能跑。如果你的网站涉及复杂的后端逻辑,且没有专职运维,Apache 的生态可能更友好。
- 优点:兼容性好、模块多、文档多。
- 缺点:内存占用相对较高,配置文件较冗长,高并发下性能略逊于 Nginx。
我的建议: 如果你是纯静态网站,或者使用 Node.js/Python 等现代框架作为后端,强烈推荐 Nginx。它的配置文件结构清晰,非常适合做“多站点挂载”。在这个案例中,我们选择了 Nginx,因为客户的两个站都是基于 Vue 构建的静态前端,后端接口调用的是第三方的云服务,本地只需要处理静态资源即可。
这里推荐一个 GitHub 上的开源仓库,里面整理了大量 Nginx 的最佳实践配置模板,特别是关于多域名、HTTPS 自动生成的部分,非常实用:nginx-best-practices。你可以去搜一下,里面有很多现成的 Server Block 示例,能帮你避开很多语法错误。
核心实现:手把手教你配置 Nginx
好,理论说完,上干货。假设你的云主机 IP 是 192.168.1.100,你买了两个域名:www.main-site.com(正式站)和 preview.design.com(预览站)。
第一步:准备目录结构 在服务器根目录下,创建两个文件夹,分别存放两个网站的静态文件:
mkdir -p /var/www/html/main-site
mkdir -p /var/www/html/preview-site
把打包好的前端文件(通常是 dist 文件夹里的内容)分别拷贝进去。注意,权限要设对,通常建议设置为 755 或 644,属主为 www-data(Nginx 的默认运行用户)。
第二步:配置 Nginx
编辑 Nginx 配置文件,通常在 /etc/nginx/sites-available/ 或 /etc/nginx/conf.d/ 目录下。为了方便管理,建议为每个网站新建一个独立的配置文件,而不是全部堆在一个 default.conf 里。
1. 配置正式站 (main-site)
新建文件 /etc/nginx/sites-available/main-site,内容如下:
server {listen 80;server_name www.main-site.com;root /var/www/html/main-site;index index.html;# 前端路由刷新 404 问题处理location / {try_files $uri $uri/ /index.html;}# 静态资源缓存优化location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {expires 30d;add_header Cache-Control "public, immutable";}
}
2. 配置预览站 (preview-site)
新建文件 /etc/nginx/sites-available/preview-site,这里我们加一个简单的 Basic Auth 密码保护,确保只有内部人员能看:
server {listen 80;server_name preview.design.com;root /var/www/html/preview-site;index index.html;# 开启基本认证auth_basic "Restricted Access";auth_basic_user_file /etc/nginx/.htpasswd;# 前端路由刷新 404 问题处理location / {try_files $uri $uri/ /index.html;}
}
第三步:生成密码文件
上面的 auth_basic_user_file 指向一个密码文件。我们需要生成它:
- 安装
htpasswd工具(通常在apache2-utils包里):sudo apt-get install apache2-utils - 创建密码文件并添加用户(比如用户名为
admin):
系统会提示你输入两次密码,输入完成后,访问预览站就会弹出登录框了。sudo htpasswd -c /etc/nginx/.htpasswd admin
第四步:启用配置并重启
Nginx 通常有一个 sites-enabled 目录,里面存放的是软链接。你需要把刚才创建的文件链接过去:
sudo ln -s /etc/nginx/sites-available/main-site /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/preview-site /etc/nginx/sites-enabled/
第五步:测试并重载 在重启之前,务必测试配置语法是否正确,避免改错导致服务崩溃:
sudo nginx -t
如果输出 syntax is ok 和 test is successful,就可以安全地重载配置了:
sudo systemctl reload nginx
第六步:域名解析 回到域名注册商后台,添加两条 A 记录:
www.main-site.com指向192.168.1.100preview.design.com指向192.168.1.100
等待 DNS 生效后,访问两个域名,应该能看到不同的网站内容了。
上线与优化:别让两个站互相拖后腿
配置好只是第一步,真正的挑战在于“上线后的维护”。很多新手在这里容易忽视性能和安全细节。
1. HTTPS 证书配置 现在的搜索引擎(如百度、Google)都极度重视 HTTPS。如果两个站都要上 SSL,你有两个选择:
- 单独申请证书:给每个域名申请一张免费或付费的证书。
- 通配符证书:如果你的两个域名是子域名关系(如
a.example.com和b.example.com),可以买一张通配符证书。但在本案例中,是两个不同主域名,所以建议单独申请。
使用 Let's Encrypt 的 certbot 工具可以一键自动化申请和续期。配置好证书后,记得在 Nginx 配置里加上 listen 443 ssl; 以及对应的 ssl_certificate 路径,并强制 HTTP 跳转 HTTPS。
2. 资源监控
虽然一台云主机挂两个站压力不大,但还是要养成监控的习惯。推荐安装 htop 和 iftop。
- htop:查看 CPU 和内存使用情况。如果内存占用持续飙升,可能是某个站有内存泄漏。
- iftop:查看网络流量。如果某个站的流量异常巨大,可能是被爬虫抓了,或者被 DDoS 攻击。
3. 日志分析
Nginx 的访问日志(access.log)是宝贵的数据源。你可以用简单的命令统计哪个页面访问最多:
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10
这对于优化静态资源加载顺序、发现 404 错误都非常有帮助。
4. 备份策略 千万不要只备份代码!一定要定期备份 Nginx 的配置文件。一个简单的 crontab 任务就可以搞定:
0 2 * * * tar -czf /backup/nginx-config-$(date +\%Y\%m\%d).tar.gz /etc/nginx/
每天凌晨 2 点打包一份配置,以防哪天手滑改坏了配置,还能快速恢复。
经验总结:给设计师转前端的几点忠告
做这个案例的过程中,我深刻体会到,“懂原理”比“会抄代码”更重要。
很多设计师转前端的朋友,习惯用拖拽工具建站,一旦涉及到服务器部署,就感到无从下手。其实,Nginx 的配置逻辑非常符合设计师的“图层”思维:
- Server Block 就像一个画板,每个画板对应一个域名。
- Location 就像画板里的图层,决定特定路径下显示什么内容。
- Root 就是素材库的路径,告诉浏览器去哪里找图片、HTML 文件。
只要理解了这三层关系,你就掌握了多站点挂载的核心。
另外,不要害怕报错。Nginx 的报错信息通常很明确,比如 host not found in upstream,这就告诉你 DNS 解析有问题;permission denied,就是文件权限没给对。学会看日志,学会用 nginx -t 测试,你就已经超过了 80% 的新手。
最后,关于“一个云主机怎么挂两个网站”这个问题,答案其实很简单:用 Nginx 的虚拟主机功能,区分 Server Name,隔离 Root 目录。剩下的,就是细心和耐心。
技术没有捷径,但有一份清晰的【速查手册】能帮你少走很多弯路。希望这篇实战记录能对你有所帮助。如果你在配置过程中遇到了奇怪的报错,或者对某个参数不太理解,欢迎在评论区留言,我会挨个回复。
还有什么建站疑问?评论区留言挨个回