在轻量应用服务器(如阿里云、腾讯云等厂商提供的产品)上部署两个网站,核心在于Web 服务器软件(Nginx/Apache)的配置。根据你拥有的资源(IP 地址数量、域名数量),主要有三种方案:基于域名的虚拟主机(最推荐)、基于端口的访问、以及基于 IP 的区分。
以下是详细的技术实现路径和操作步骤:
方案一:基于域名的虚拟主机(Virtual Hosts)—— 行业标准做法
这是最主流、最优雅的方式。只要你的轻量服务器有公网 IP,并且你拥有两个不同的域名(或子域名),就可以通过配置 Nginx 或 Apache,让同一个 IP 地址根据不同的 Host 头信息,将请求转发到不同的网站目录。
前提条件
- 轻量服务器已安装 Web 服务器(以 Nginx 为例,因其性能更好且配置更简洁)。
- 两个域名(例如
a.com和b.com)均已解析到该服务器的公网 IP。 - 两个网站的代码分别存放在服务器的不同目录下(例如
/var/www/site_a和/var/www/site_b)。
Nginx 配置步骤
-
创建站点目录
mkdir -p /var/www/site_a/html mkdir -p /var/www/site_b/html # 放入各自的 index.html 测试文件 echo "Site A" > /var/www/site_a/html/index.html echo "Site B" > /var/www/site_b/html/index.html -
编写 Nginx 配置文件
进入 Nginx 配置目录(通常在/etc/nginx/conf.d/或/etc/nginx/sites-available/),创建两个配置文件。文件 1:
site_a.confserver { listen 80; server_name a.com www.a.com; root /var/www/site_a/html; index index.html index.htm; location / { try_files $uri $uri/ =404; } }文件 2:
site_b.confserver { listen 80; server_name b.com www.b.com; root /var/www/site_b/html; index index.html index.htm; location / { try_files $uri $uri/ =404; } } -
重载 Nginx 配置
nginx -t # 检查语法是否正确 systemctl reload nginx # 平滑重启,不中断服务 -
验证
浏览器访问http://a.com显示 Site A,访问http://b.com显示 Site B。
注意:如果希望使用 HTTPS(443 端口),需为每个域名申请 SSL 证书,并在对应的
server块中添加listen 443 ssl;及证书路径配置。
方案二:基于端口区分 —— 适用于无多域名或内部测试
如果你只有一个域名,或者不想进行复杂的 DNS 解析,可以通过监听不同的端口来区分服务。但这种方式用户体验较差,因为用户必须手动输入端口号(如 http://ip:8080)。
适用场景
- 临时测试环境
- 同一域名下需要暴露多个非标准服务
- 没有备案域名或无法解析子域名
Nginx 配置示例
修改 Nginx 主配置或新建配置文件,监听不同端口:
# 网站 A 使用默认 80 端口
server {
listen 80;
server_name _; # 匹配所有未指定的域名
root /var/www/site_a/html;
}
# 网站 B 使用 8080 端口
server {
listen 8080;
server_name _;
root /var/www/site_b/html;
}
重要提醒:
- 防火墙/安全组设置:轻量服务器的云厂商控制台(如阿里云安全组、腾讯云防火墙)默认只开放 80 和 443 端口。你必须去云控制台手动添加规则,允许 TCP 协议的 8080 端口入站。
- 用户体验差:用户访问时必须带端口号,容易被误认为不安全链接。
方案三:基于 IP 区分 —— 仅适用于拥有多个公网 IP
如果你的轻量服务器购买了弹性公网 IP(EIP)并绑定了多个 IP,或者服务器本身有多个网卡/IP,可以通过绑定不同 IP 来区分。
配置方式
server {
listen 192.0.2.1:80; # 第一个 IP
server_name _;
root /var/www/site_a/html;
}
server {
listen 192.0.2.2:80; # 第二个 IP
server_name _;
root /var/www/site_b/html;
}
现实情况:大多数轻量应用服务器套餐只包含一个公网 IP,因此此方案在实际中较少用,除非你额外购买了 EIP。
关键注意事项与最佳实践
-
防火墙与安全组(重中之重)
- 轻量服务器受两层保护:操作系统内部防火墙(如
iptables/firewalld)和云平台的安全组。 - 务必在云控制台的安全组中放行对应端口(80/443 通常默认开放,8080 等需手动添加)。
- 操作系统内建议启用
firewalld或ufw,仅开放必要端口。
- 轻量服务器受两层保护:操作系统内部防火墙(如
-
权限问题
- 确保 Nginx 运行用户(通常是
www-data或nginx)对网站目录有读取权限。 - 可使用命令修复:
chown -R www-data:www-data /var/www/site_*
- 确保 Nginx 运行用户(通常是
-
静态资源缓存与性能
- 对于静态网站,建议在 Nginx 中开启 gzip 压缩和 expires 缓存头,提升加载速度。
- 若网站涉及动态内容(PHP/Python/Node.js),需配置反向X_X至后端服务(如 PHP-FPM、Gunicorn 等),此时需监听 Unix Socket 或本地回环地址(127.0.0.1:port)。
-
HTTPS 强制跳转
- 现代网站应强制使用 HTTPS。可在 Nginx 中配置:
server { listen 80; server_name a.com; return 301 https://$host$request_uri; }
- 现代网站应强制使用 HTTPS。可在 Nginx 中配置:
-
云服务器厂商限制
- 国内主流云厂商(阿里云、腾讯云、华为云等)对轻量服务器有合规要求。所有对外提供服务的网站必须完成 ICP 备案,否则 80/443 端口可能被阻断。
- 若未备案,可尝试使用非标准端口(如 8080)+ 自有域名,但存在被运营商封禁的风险,不建议用于生产环境。
总结建议
| 方案 | 优点 | 缺点 | 推荐指数 |
|---|---|---|---|
| 基于域名(Nginx Server Block) | 专业、支持 HTTPS、无需用户记端口、SEO 友好 | 需多个域名 + 备案 | ⭐⭐⭐⭐⭐ |
| 基于端口 | 配置简单、无需多域名 | 用户体验差、需开额外端口、易被拦截 | ⭐⭐ |
| 基于 IP | 隔离彻底 | 需多 IP、成本高、轻量机通常不支持 | ⭐ |
最终建议:
请优先采用 方案一(基于域名的 Nginx 虚拟主机)。这是业界标准做法,稳定、安全、易于维护。确保你的两个域名都已正确解析并备案,然后在 Nginx 中为每个域名创建独立的 server 块即可。
CLOUD云枢