加油
努力

在轻量服务器上做多个网站,需要怎么设置域名和端口?

在轻量服务器(如腾讯云轻量应用服务器、阿里云轻量云服务器等)上部署多个网站,核心思路是:通过反向X_X(推荐 Nginx/Apache)实现基于域名的虚拟主机(Name-based Virtual Hosting),而非依赖不同端口暴露多个网站。这是最标准、安全、用户友好的做法。

下面为你清晰梳理完整方案(以主流 Linux + Nginx 为例):


✅ 正确做法:单端口(80/443) + 多域名(推荐!)

⚠️ 不建议为每个网站开不同端口(如 :8080, :3000),原因:

  • 用户需手动输入端口(http://example.com:8080),体验差;
  • 防火墙/运营商可能屏蔽非标端口;
  • SEO 和 HTTPS 配置复杂;
  • 安全性降低(暴露服务端口和栈信息)。

🌐 一、前提准备

  1. 拥有多个已备案(国内必需)且解析到服务器公网 IP 的域名
    ✅ 如:www.site-a.comwww.site-b.com → 均 A 记录指向你的轻量服务器 IP。
  2. 服务器环境
    • 系统:Ubuntu 22.04 / CentOS Stream 9(轻量服务器常见系统)
    • 已安装 Nginx(或 Apache)
    • 已开放安全组/防火墙的 80(HTTP)和 443(HTTPS)端口(轻量服务器控制台中设置!)

🛠 二、配置步骤(Nginx 示例)

Step 1:创建网站目录结构

sudo mkdir -p /var/www/site-a.com/html
sudo mkdir -p /var/www/site-b.com/html

# 写个测试页验证
echo "<h1>Welcome to Site A</h1>" | sudo tee /var/www/site-a.com/html/index.html
echo "<h1>Welcome to Site B</h1>" | sudo tee /var/www/site-b.com/html/index.html

# 设置权限(可选,确保 Nginx 可读)
sudo chown -R $USER:$USER /var/www/site-a.com/html
sudo chown -R $USER:$USER /var/www/site-b.com/html
sudo chmod -R 755 /var/www

Step 2:为每个域名创建 Nginx Server Block(虚拟主机)

💡 文件位置:/etc/nginx/sites-available/(Ubuntu)或 /etc/nginx/conf.d/(CentOS)

# 创建 site-a 配置(Ubuntu 推荐用 sites-available + symlink)
sudo nano /etc/nginx/sites-available/site-a.com

内容如下:

server {
    listen 80;
    server_name www.site-a.com site-a.com;

    root /var/www/site-a.com/html;
    index index.html;

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

    # 可选:强制 HTTPS(配完 SSL 后开启)
    # return 301 https://$server_name$request_uri;
}

同理创建 site-b.com

sudo nano /etc/nginx/sites-available/site-b.com
server {
    listen 80;
    server_name www.site-b.com site-b.com;

    root /var/www/site-b.com/html;
    index index.html;

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

Step 3:启用站点(软链接)

sudo ln -sf /etc/nginx/sites-available/site-a.com /etc/nginx/sites-enabled/
sudo ln -sf /etc/nginx/sites-available/site-b.com /etc/nginx/sites-enabled/

🔁 Ubuntu 用户注意:默认 sites-enabled 中可能有 default,建议删除或重命名避免冲突:
sudo rm /etc/nginx/sites-enabled/default

Step 4:语法检查 & 重启 Nginx

sudo nginx -t  # 检查配置是否正确
sudo systemctl restart nginx

✅ 此时访问 http://www.site-a.comhttp://www.site-b.com 即可看到不同网站!


🔐 三、配置 HTTPS(强烈建议!免费证书)

使用 Certbot + Let’s Encrypt 自动签发:

# Ubuntu 安装 Certbot(以 snap 方式最可靠)
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

# 为每个域名申请证书(自动修改 Nginx 配置)
sudo certbot --nginx -d site-a.com -d www.site-a.com
sudo certbot --nginx -d site-b.com -d www.site-b.com

✅ Certbot 会自动:

  • 申请并部署 SSL 证书
  • 修改 Nginx 配置,添加 443 监听 + HTTP → HTTPS 重定向
  • 配置自动续期(systemd timer)

📌 国内用户注意:Let’s Encrypt 全球通用,但需确保域名 DNS 解析正常、80/443 端口可达(轻量服务器安全组务必放行!)


🧩 四、进阶场景补充

场景 方案
静态网站 + Node.js/Python 后端 用 Nginx 反向X_X:location /api { proxy_pass http://127.0.0.1:3000; }
WordPress / PHP 网站 安装 PHP-FPM,配置 fastcgi_pass unix:/run/php/php8.1-fpm.sock;
同一域名多路径(如 /blog, /shop location /blog { ... } 分别X_X不同后端
需要监听非标端口(调试用)? 仅限内网或本地开发;生产环境仍应通过 Nginx 统一走 80/443

❌ 常见错误避坑

  • ✖️ 在安全组只开了 22(SSH)和 80,忘了开 443 → HTTPS 失败
  • ✖️ 域名未备案(国内)→ 被拦截(尤其腾讯云/阿里云)
  • ✖️ Nginx 配置中 server_name 拼写错误或少了 www. 版本
  • ✖️ 本地 hosts 测试时没清浏览器缓存或 DNS 缓存(ipconfig /flushdnssudo systemd-resolve --flush-caches
  • ✖️ 忘记 sudo nginx -t && sudo systemctl reload nginx 生效配置

✅ 总结:最佳实践清单

项目 推荐方式
端口 只开放 80 + 443(安全组/防火墙)
路由依据 域名(Host 请求头)→ Nginx server_name
HTTPS Certbot 自动签发 + 自动续期(必做!)
网站隔离 独立目录 + 独立配置文件 + 独立日志(access_log /var/log/nginx/site-a.access.log;
备案 国内服务器必须完成域名备案(否则 80/443 被阻断)

需要我帮你:

  • ✅ 生成完整的 Nginx 配置模板(含 PHP/Node 支持)?
  • ✅ 写一个一键部署多站的 Bash 脚本?
  • ✅ 指导如何在腾讯云轻量服务器控制台配置安全组?
  • ✅ 解决某个具体报错(如 502 Bad Gateway, ERR_CONNECTION_REFUSED)?

欢迎随时告诉我你的服务器系统、域名数量、网站类型(静态/WordPress/Next.js等),我可以为你定制详细命令 👇

云服务器