加油
努力

如何在轻服务器上配置多个网站共存?

在轻量应用服务器(如腾讯云轻量、阿里云轻量、Vultr、DigitalOcean Droplet 等)上配置多个网站共存,核心是通过 Web 服务器的虚拟主机(Virtual Host)机制 实现基于域名或端口的多站托管。以下是清晰、安全、生产可用的完整方案(以主流组合 Nginx + Ubuntu/Debian 为例,也附 Apache 和关键注意事项):


✅ 前提条件

  1. 已购轻量服务器(建议 ≥1GB 内存、20GB SSD)
  2. 已绑定并解析多个域名到服务器公网 IP(如 site1.comsite2.net1.2.3.4
  3. 已安装基础环境(推荐:Ubuntu 22.04 LTS + Nginx + Certbot + PHP-FPM(如需 PHP))

🌐 方案一:Nginx 多域名虚拟主机(推荐 ✅)

✅ 高性能、低内存占用,最适合轻量服务器

步骤 1:创建网站目录结构

sudo mkdir -p /var/www/site1.com/html
sudo mkdir -p /var/www/site2.net/html

# 设置权限(用你的普通用户替换 `ubuntu`)
sudo chown -R $USER:$USER /var/www/site1.com/html
sudo chown -R $USER:$USER /var/www/site2.net/html
sudo chmod -R 755 /var/www

# 写测试页(可选)
echo "<h1>Welcome to site1.com</h1>" | sudo tee /var/www/site1.com/html/index.html
echo "<h1>Welcome to site2.net</h1>" | sudo tee /var/www/site2.net/html/index.html

步骤 2:为每个站点创建 Nginx Server Block(配置文件)

# 创建配置文件(注意:不带 .conf 后缀可能不被加载!)
sudo nano /etc/nginx/sites-available/site1.com

内容如下:

server {
    listen 80;
    server_name site1.com www.site1.com;

    root /var/www/site1.com/html;
    index index.html index.htm index.php;

    location / {
        try_files $uri $uri/ =404;
    }

    # 若需 PHP 支持(如 WordPress),取消下面注释并确保已装 php-fpm
    # location ~ .php$ {
    #     include snippets/fastcgi-php.conf;
    #     fastcgi_pass unix:/run/php/php8.1-fpm.sock;  # 根据实际版本调整
    # }
}

同理创建 /etc/nginx/sites-available/site2.net(仅改 server_nameroot)。

步骤 3:启用站点(软链接到 sites-enabled)

sudo ln -sf /etc/nginx/sites-available/site1.com /etc/nginx/sites-enabled/
sudo ln -sf /etc/nginx/sites-available/site2.net /etc/nginx/sites-enabled/

# 可选:禁用默认站点(避免冲突)
sudo rm -f /etc/nginx/sites-enabled/default

步骤 4:语法检查 & 重启

sudo nginx -t  # ✅ 应显示 "syntax is ok"
sudo systemctl reload nginx

✅ 此时访问 http://site1.comhttp://site2.net 即可看到不同页面。


🔐 步骤 5:为所有站点添加 HTTPS(强烈推荐 ✅)

使用 Certbot(免费 Let’s Encrypt 证书):

# 安装 Certbot(Ubuntu)
sudo apt update && sudo apt install -y certbot python3-certbot-nginx

# 一键为两个域名申请证书(自动修改 Nginx 配置)
sudo certbot --nginx -d site1.com -d www.site1.com -d site2.net -d www.site2.net

# Certbot 会自动重载 Nginx 并配置 80→443 重定向

✅ 自动生效 HTTPS,且证书 90 天自动续期(Certbot 已配置 systemd timer)。


📦 方案二:Apache(备选,稍重)

若习惯 Apache:

sudo a2enmod rewrite ssl
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/site1.com.conf
# 编辑配置:修改 ServerName、DocumentRoot、<Directory>路径
sudo a2ensite site1.com.conf
sudo systemctl reload apache2

⚠️ 注意:Apache 默认占用更多内存(~50MB/进程),轻量服务器建议优先选 Nginx。


🧩 进阶技巧(提升实用性)

场景 方法
同一域名不同路径(如 example.com/blog, example.com/api 在主配置中用 location /blog { alias /var/www/blog; }
静态站 + 动态站混合 Nginx 静态文件直接服务;PHP/Python 请求反向X_X给后端(如 proxy_pass http://127.0.0.1:8000;
Node.js 应用(如 Vue SSR、Express) proxy_pass http://localhost:3000; 指向 Node 进程,并用 PM2 守护
数据库隔离 每个网站用独立 MySQL 用户 + 独立数据库(CREATE DATABASE site1_db; CREATE USER 'site1'@'localhost' IDENTIFIED BY 'pwd'; GRANT ALL ON site1_db.* TO 'site1'@'localhost';

⚠️ 关键注意事项(避坑指南)

  • ❌ 不要直接编辑 /etc/nginx/nginx.conf 主配置 —— 用 sites-available + sites-enabled 管理更安全;
  • ❌ 域名未正确 DNS 解析(A 记录指向服务器 IP)会导致 404 或连接失败 → 用 ping site1.comnslookup site1.com 验证;
  • ❌ 轻量服务器防火墙(如腾讯云控制台安全组)必须放行 80 和 443 端口(不只是 SSH 的 22);
  • ✅ 使用 sudo nginx -t 每次改配置后必检,避免 reload 失败导致服务中断;
  • ✅ 日志排查:sudo tail -f /var/log/nginx/error.log(错误根源)、access.log(请求记录);
  • ✅ 定期备份:sudo tar -czf /backup/nginx-config-$(date +%F).tar.gz /etc/nginx/sites-available/

📦 一键脚本(可选,简化部署)

可编写简单 Bash 脚本自动化建站(示例片段):

#!/bin/bash
DOMAIN=$1
sudo mkdir -p "/var/www/$DOMAIN/html"
echo "<h1>$DOMAIN</h1>" | sudo tee "/var/www/$DOMAIN/html/index.html"
# ... 自动生成 server block ...
sudo nginx -t && sudo systemctl reload nginx

运行:sudo ./add-site.sh myblog.com


需要我为你:

  • ✅ 提供完整的 WordPress 多站部署模板(含数据库、PHP、缓存优化)?
  • ✅ 生成 Docker Compose 版多站方案(隔离性更强)?
  • ✅ 输出 腾讯云/阿里云轻量控制台安全组规则截图指引
  • ✅ 写一个 自动部署脚本(含 HTTPS)

欢迎告诉我你的具体需求(比如用什么程序?多少个站?是否需要数据库?),我可以为你定制化输出 👇

云服务器