当前位置:首页 > 互联网 > 正文

如何在一台服务器上配置多个网站?详细步骤与实用教程指南

要在服务器上配置两个或更多网站,通常通过虚拟主机(Virtual Host)实现,以下是基于主流Web服务器(Apache和Nginx)的详细步骤:


Apache 服务器配置多网站

创建网站目录

sudo mkdir -p /var/www/site1/public_html sudo mkdir -p /var/www/site2/public_html sudo chown -R $USER:$USER /var/www/site1/public_html sudo chown -R $USER:$USER /var/www/site2/public_html

创建测试页面

echo "<h1>Site 1 Works!</h1>" > /var/www/site1/public_html/index.html echo "<h1>Site 2 Works!</h1>" > /var/www/site2/public_html/index.html

配置虚拟主机

  • 创建配置文件:

    sudo nano /etc/apache2/sites-available/site1.conf sudo nano /etc/apache2/sites-available/site2.conf
  • site1.conf 内容

    <VirtualHost *:80> ServerName site1.com ServerAlias www.site1.com DocumentRoot /var/www/site1/public_html ErrorLog ${APACHE_LOG_DIR}/site1_error.log CustomLog ${APACHE_LOG_DIR}/site1_access.log combined </VirtualHost>
  • site2.conf 内容(修改 ServerName 和路径):

    <VirtualHost *:80> ServerName site2.com DocumentRoot /var/www/site2/public_html # 其他配置同上 </VirtualHost>

启用站点并重载配置

sudo a2ensite site1.conf sudo a2ensite site2.conf sudo systemctl reload apache2

本地测试(可选)

编辑 /etc/hosts 添加临时DNS解析:

0.0.1 site1.com 127.0.0.1 site2.com


Nginx 服务器配置多网站

创建网站目录(同Apache)

sudo mkdir -p /var/www/site1/public_html sudo mkdir -p /var/www/site2/public_html

配置虚拟主机

  • 创建配置文件:

    如何在一台服务器上配置多个网站?详细步骤与实用教程指南 第1张

  • site1 内容

    server { listen 80; server_name site1.com www.site1.com; root /var/www/site1/public_html; index index.html; location / { try_files $uri $uri/ =404; } }
  • site2 内容(修改 server_name 和路径):

    如何在一台服务器上配置多个网站?详细步骤与实用教程指南 第2张

    server { listen 80; server_name site2.com; root /var/www/site2/public_html; # 其他配置同上 }
  • 启用站点并重载配置

    sudo ln -s /etc/nginx/sites-available/site1 /etc/nginx/sites-enabled/ sudo ln -s /etc/nginx/sites-available/site2 /etc/nginx/sites-enabled/ sudo nginx -t # 测试配置 sudo systemctl reload nginx


    关键注意事项

    1. 域名解析

      • 确保域名已解析到服务器IP(通过DNS管理平台设置A记录)。
      • 本地测试可修改 /etc/hosts 临时绑定。
    2. 防火墙设置

      开放HTTP/HTTPS端口:

      如何在一台服务器上配置多个网站?详细步骤与实用教程指南 第3张

      sudo ufw allow 80/tcp # HTTP sudo ufw allow 443/tcp # HTTPS
    3. HTTPS 支持

      使用 Let’s Encrypt 免费证书:

      sudo certbot --apache # Apache sudo certbot --nginx # Nginx

    4. 资源隔离

      • 对高负载网站,建议分配独立用户权限。
      • 使用 chroot 或容器化(Docker)增强隔离性。
      • 日志管理

        定期清理日志(如配置 logrotate)。

      • 常见问题排查

        • 403 Forbidden:检查目录权限和所有权。
        • 404 Not Found:确认 DocumentRoot 路径正确。
        • 端口冲突:确保无其他进程占用80/443端口(sudo lsof -i :80)。
        • 配置语法错误
          • Apache:sudo apache2ctl configtest
          • Nginx:sudo nginx -t

        通过以上步骤,您可以在单台服务器上高效托管多个网站,根据实际需求调整配置(如负载均衡、缓存等)以优化性能。

0