服务器部署多个网页需要怎么配置?

在云服务器上部署多个网页(网站),核心逻辑在于“一台服务器,多个入口”。这通常通过 Web 服务器软件(如 Nginx、Apache)的虚拟主机(Virtual Host)或反向X_X机制来实现。

作为从业者,我将从最主流、最稳定且性能最好的 Nginx + 多域名/多端口方案 出发,结合国内云环境的特点,给出具体配置思路和操作步骤。


一、 核心架构选择

在国内云计算环境中,常见的几种部署方式:

  1. Nginx 反向X_X + 多个应用服务(推荐)
    • 适用场景:前端静态页面 + 后端 API(Java/Node.js/Python 等)。
    • 优势:Nginx 处理静态资源能力强,负载均衡和反向X_X灵活。
  2. Apache 虚拟主机
    • 适用场景:传统 PHP 项目为主,配置简单。
    • 劣势:高并发下性能不如 Nginx。
  3. Docker 容器化部署(进阶推荐)
    • 每个网站独立容器,隔离性好,便于迁移和维护。

本文以 Nginx 为例,这是目前国内云服务器(阿里云 ECS、腾讯云 CVM、华为云 ECS 等)最通用的标准实践。


二、 前提条件

  1. 域名解析:确保你的多个域名(如 a.com, b.com)都已备案并解析到该服务器的公网 IP。
  2. 服务器防火墙/安全组:在云平台控制台开放 80(HTTP) 和 443(HTTPS) 端口。
  3. Web 服务器安装:假设已安装 Nginx。

三、 配置步骤详解

第一步:准备网站目录结构

建议将不同网站的文件放在独立目录下,便于管理。例如:

sudo mkdir -p /var/www/html/site_a
sudo mkdir -p /var/www/html/site_b

将 site_a 的网页文件放入 /var/www/html/site_a/,site_b 放入 /var/www/html/site_b/。

第二步:创建 Nginx 站点配置文件

Nginx 的配置通常位于 /etc/nginx/sites-available/(Ubuntu/Debian)或 /etc/nginx/conf.d/(CentOS/RHEL)。我们创建一个新文件来定义一个站点。

以 site_a.com 为例:

# /etc/nginx/conf.d/site_a.conf

server {
    listen 80;
    server_name site_a.com www.site_a.com;  # 替换为你的域名

    root /var/www/html/site_a;               # 网站根目录
    index index.html index.htm;              # 默认首页

    # 日志配置
    access_log /var/log/nginx/site_a_access.log;
    error_log /var/log/nginx/site_a_error.log;

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

    # 可选:如果包含 PHP,需添加 PHP-FPM 配置
    # location ~ .php$ {
    #     include snippets/fastcgi-php.conf;
    #     fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    # }
}

关键点:server_name 必须与域名完全匹配;root 指向正确的物理路径。

第三步:为第二个网站重复上述步骤

创建 site_b.conf,内容类似,但修改 server_name 和 root:

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

    root /var/www/html/site_b;
    index index.html;

    access_log /var/log/nginx/site_b_access.log;
    error_log /var/log/nginx/site_b_error.log;

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

第四步:测试并加载配置

  1. 测试配置文件语法是否正确:

    sudo nginx -t

    如果输出 syntax is ok 和 test is successful,则继续。

  2. 重新加载 Nginx:

    sudo systemctl reload nginx

此时,访问 http://site_a.com 和 http://site_b.com 应该分别显示对应目录下的网页。


四、 HTTPS 加密配置(生产环境必备)

国内云厂商普遍要求或推荐使用 HTTPS。可使用 Let’s Encrypt 免费证书,或通过云厂商提供的 SSL 证书管理服务申请。

以 Certbot(自动化工具)为例:

sudo apt install certbot python3-certbot-nginx  # Ubuntu
sudo yum install certbot python3-certbot-nginx  # CentOS

# 为第一个站点获取证书
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 会自动修改 Nginx 配置,添加 HTTPS 监听和证书路径,并重定向 HTTP 到 HTTPS。


五、 高级优化建议

  1. 使用 Docker 部署(更推荐用于复杂项目)
    如果每个网站技术栈不同(如一个 Vue + Spring Boot,另一个 WordPress),建议使用 Docker Compose 编排:

    version: '3'
    services:
     site_a:
       image: nginx:alpine
       volumes:
         - ./site_a:/usr/share/nginx/html
       ports:
         - "8080:80"
     site_b:
       image: wordpress
       ports:
         - "8081:80"

    然后通过外部 Nginx 做反向X_X,将 site_a.com 转发到 localhost:8080,site_b.com 转发到 localhost:8081。

  2. 静态资源缓存
    在 Nginx 中为 CSS/JS/图片设置长期缓存,提升加载速度:

    location ~* .(js|css|png|jpg|jpeg|gif|ico)$ {
       expires 30d;
       add_header Cache-Control "public, no-transform";
    }
  3. 限制访问频率
    防止 CC 攻击,可在 Nginx 中配置限流:

    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
    location / {
       limit_req zone=one burst=5;
       ...
    }
  4. 国内云厂商特性利用

    • 阿里云:可使用 CDN 提速静态资源,减轻源站压力。
    • 腾讯云:可搭配 WAF(Web 应用防火墙)防护常见漏洞。
    • 华为云:可使用 ELB(弹性负载均衡)实现多台服务器集群部署多个网站。

六、 常见问题排查

问题 可能原因 解决方案
403 Forbidden 权限不足 检查目录所有者是否为 www-data 或 nginx,执行 sudo chown -R www-data:www-data /var/www/html/site_a
404 Not Found 路径错误或文件不存在 检查 root 路径是否正确,确认 index.html 是否存在
域名无法访问 DNS 未生效或安全组未放行 检查域名解析记录是否指向服务器 IP;登录云平台控制台检查安全组规则是否开放 80/443 端口
配置不生效 配置文件未被加载 检查配置文件是否在 conf.d/ 或 sites-enabled/ 目录下,运行 nginx -t 验证语法

总结

部署多个网页的核心是 Nginx 的多 Server 块配置。只要确保每个域名的 server_name 唯一,并指向不同的 root 目录,即可在一台服务器上托管无限个网站。对于生产环境,务必启用 HTTPS,并根据业务量考虑 CDN 和负载均衡。

未经允许不得转载:CLOUD云枢 » 服务器部署多个网页需要怎么配置?