Apache配置多域名访问不同网站

更新时间:
复制为 MD 格式

如果在一个服务器上部署多个完全独立的网站,每个网站对应不同的业务,您可以通过修改Apache配置文件来实现多域名访问不同网站,从而充分利用服务器资源,提高管理和运营效率。

前提条件

准备环境

在本文的操作步骤中,示例资源说明如下:

  • 服务器:选用LAMP 7.4镜像创建的轻量应用服务器。

  • 测试网站:共两个,test01test02

  • 测试域名:共两个,test01.example.comtest02.example.com

最终配置完成后,将实现:

  • 访问test01.example.com,获取测试网站test01的信息。

  • 访问test02.example.com,获取测试网站test02的信息。

您在实际操作中,需要将示例资源更换为您自己的资源。

步骤一:创建测试网站

如果您的多个网站代码已保存在服务器的网站根目录下,可以跳过本步骤。

  1. 远程连接LAMP服务器。

    具体操作,请参见远程连接Linux服务器

  2. 运行以下命令,进入网站根目录。

    轻量应用服务器的LAMP应用镜像不同版本中的网站根目录也不同,具体说明如下:

    • LAMP 7.4应用镜像默认的网站根目录为/data/wwwroot/default

    • LAMP 6.1.0应用镜像默认的网站根目录为/home/www/htdocs

    本示例选用的是LAMP 7.4应用镜像,因此命令如下所示:

    cd /data/wwwroot/default
  3. 依次运行以下命令,创建两个子目录。

    子目录用于存放测试网站,即存放网站代码。

    sudo mkdir test01
    sudo mkdir test02
  4. 运行以下命令,进入test01子目录,新建并编辑index.html文件。

    1. 进入test01子目录。

      cd /data/wwwroot/default/test01/
    2. 新建index.html文件。

      sudo vi index.html
    3. i键进入编辑模式,添加以下测试信息。

      Test page 01
    4. 编辑完成后,按Esc键,并输入:wq后按下回车键,保存并退出文件。

  5. 运行以下命令,进入test02子目录,新建并编辑index.html文件。

    1. 进入test02子目录。

      cd /data/wwwroot/default/test02/
    2. 新建index.html文件。

      sudo vi index.html
    3. i键进入编辑模式,添加以下测试信息。

      Test page 02
    4. 编辑完成后,按Esc键,并输入:wq后按下回车键,保存并退出文件。

步骤二:修改Apache配置文件

  1. 修改httpd.conf配置文件。

    1. 运行以下命令,打开httpd.conf配置文件。

      sudo vi /usr/local/apache/conf/httpd.conf
    2. i键进入编辑模式,修改配置信息。

      找到以下配置信息:

      # Virtual hosts
      #Include conf/extra/httpd-vhosts.conf

      去掉#Include conf/extra/httpd-vhosts.conf行首的#

      修改完成后,配置文件中该行变为:Include conf/extra/httpd-vhosts.conf

    3. Esc键,然后输入:wq并按Enter键,保存退出文件。

  2. 修改httpd-vhosts.conf文件。

    1. 运行以下命令,打开httpd-vhosts.conf文件。

      sudo vi /usr/local/apache/conf/extra/httpd-vhosts.conf
    2. i键进入编辑模式,修改配置信息。

      您需要注释掉配置文件中默认的配置信息(即<VirtualHost *:80></VirtualHost>标签中的配置信息),并手动添加您的多个域名的配置信息。

      主要配置信息说明如下,您可以根据实际情况自定义配置信息。

      1. 注释掉默认配置信息。Apache默认虚拟主机配置文件(httpd-vhosts.conf)中已有的注释示例内容如下:

        #<VirtualHost *:80>
        #    ServerAdmin webmaster@dummy-host.example.com
        #    DocumentRoot "/usr/local/apache/docs/dummy-host.example.com"
        #    ServerName dummy-host.example.com
        #    ServerAlias www.dummy-host.example.com
        #    ErrorLog "logs/dummy-host.example.com-error_log"
        #    CustomLog "logs/dummy-host.example.com-access_log" common
        #</VirtualHost>
        #<VirtualHost *:80>
        #    ServerAdmin webmaster@dummy-host2.example.com
        #    DocumentRoot "/usr/local/apache/docs/dummy-host2.example.com"
        #    ServerName dummy-host2.example.com
        #    ErrorLog "logs/dummy-host2.example.com-error_log"
        #    CustomLog "logs/dummy-host2.example.com-access_log" common
        #</VirtualHost>
      2. 在文件的末尾添加以下配置信息。

        <VirtualHost *:80>
             DocumentRoot "/data/wwwroot/default/test01"
             ServerName test01.example.com
        </VirtualHost>
        <VirtualHost *:80>
             DocumentRoot "/data/wwwroot/default/test02"
             ServerName test02.example.com
        </VirtualHost>

        主要配置信息说明如下,您可以根据实际情况自定义配置信息。

        • DocumentRoot :设置网站所在的路径。格式:DocumentRoot "网站路径"

        • ServerName:设置域名。格式:ServerName 您的域名

  • Esc键,然后输入:wq并按Enter键,保存退出文件。

  • 运行以下命令,重启Apache服务。

    sudo systemctl restart httpd
  • 步骤三:绑定域名

    由于本示例中的两个域名为测试域名,因此需要在本地主机(Windows操作系统)的hosts文件中配置IP映射。

    说明

    如果您在配置多个站点信息时使用的是真实的域名,请忽略以下操作步骤。您需要为LAMP服务器绑定多个域名。具体操作,请参见绑定并解析域名。成功绑定域名后,即可使用不同的域名访问不同的网站。

    1. 访问C:\Windows\System32\drivers\etc目录。

    2. 复制hosts文件进行备份。

      保留hosts - 副本文件,在测试完成后使用该文件恢复hosts文件的初始状态。

    3. 修改hosts文件。

      在文件末尾追加以下内容。

      <轻量应用服务器公网IP> test01.example.com
      <轻量应用服务器公网IP> test02.example.com
    4. 返回Windows桌面,以管理员身份运行命令提示符。

    5. 在命令提示符窗口中运行以下命令,使hosts配置立即生效。

      ipconfig /flushdns

    步骤四:测试访问

    在本地主机(Windows操作系统),使用浏览器依次访问两个测试站点。

    • 访问test01.example.com,页面正常显示 Test page 01,表示 test01 站点访问成功。

    • 访问test02.example.com,页面显示 Test page 02,表明 test02 站点访问正常。

    相关文档

    您可以为域名设置HTTPS加密访问以较低的成本将数据传输协议从HTTP转换成HTTPS,实现网站的身份验证和数据加密传输,防止数据在传输过程中被篡改或信息泄露。具体操作,请参见: