配置 Apache 虚拟主机以在同一 IP 地址上运行多个网站

配置 Apache 虚拟主机以在同一 IP 地址上运行多个网站

我已经在我的计算机上设置了 Apache Web 服务器。

并尝试根据域名为同一 IP 提供 2 个站点服务。
我有 2 个域名:

  • example0.com
  • example1.com

它们重定向到同一个 IP 地址(我使用“freenom”服务)因此我需要根据域名提供不同的内容。

我正在关注 Digital Ocean 上的这个教程:“如何在 Debian 7 上设置 Apache 虚拟主机

我已经完成了所有步骤,除了最后一步(“设置本地主机”)。

结果是我得到了每个域名相同的内容。

我有/etc/apache2/sites-available/example0.com.conf、、example1.com.conf000-default.confdefault-ssl.conf

example0.com.conf得到了:

<VirtualHost *:80>  
        # The ServerName directive sets the request scheme, hostname and port that  
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com  

        ServerAdmin webmaster@localhost  
        ServerName example0.com  
        ServerAlias www.example0.com  

        DocumentRoot /var/www/example0.com/public_html  

example1.com.conf我得到了同样的东西,但是用example0example1代替

我用了:

a2ensite example0.com  
a2ensite example1.com  

service apache2 restart

我做错了什么?

答案1

我认为你的方向是对的。检查每一步!它一定有效。

您应该为两个不同的网页创建两个目录。假设:

/var/www/example0.com/public_html
/var/www/example1.com/public_html

然后您必须设置目录的所有者:

sudo chown -R $USER:$USER /var/www/example0.com/public_html
sudo chown -R $USER:$USER /var/www/example1.com/public_html

其中 $USER 是 apache 的所有者。这取决于您的系统。可能是 www-data、apache、http 或任何其他。我猜在 Debian 上应该是 www-data

然后使目录可读且可执行:

sudo chmod -R 755 /var/www

让我们为每个创建一个不同的 html 网页(两种情况下都是 index.html):

<html>
  <head>
    <title>Welcome to example0.com</title>
  </head>
  <body>
    <h1>Success, example0.com is working!</h1>
  </body>
</html>

<html>
   <head>
     <title>Welcome to example1.com</title>
   </head>
   <body>
     <h1>Success, example1.com is working!</h1>
   </body>
 </html>

将两个文件分别保存在各自的目录中(/var/www/example0.com/public_html/var/www/example1.com/public_html)。我再说一遍,两个文件的名称都是 index.html

然后让我们创建 VirtualHosts 配置文件。我们使用默认文件作为模板:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example0.com.conf
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example1.com.conf

然后使用 vi、nano 或任何文本编辑器软件编辑每个文件。让我们从 example0.conf 开始

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName example0.com
    ServerAlias www.example0.com
    DocumentRoot /var/www/example0.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

然后对第二个文件进行同样的操作:

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName example1.com
    ServerAlias www.example1.com
    DocumentRoot /var/www/example1.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

然后,我们将激活新站点:

sudo a2ensite example0.com.conf
sudo a2ensite example1.com.conf

然后,重新启动 apache 服务以使更改生效:

sudo service apache2 restart

就这样。

如何测试?您可以更改 hosts 文件以访问新的 Web 服务器:

127.0.0.1   localhost
127.0.1.1   guest-desktop
111.111.111.111 example0.com www.example0.com
111.111.111.111 example1.com www.example1.com

当然你必须将 111.111.111.111 ip 更改为真实的 ip,甚至是你的 LAN ip。

然后,您可以在更改 hosts 文件的机器上进行测试,尝试使用浏览器访问http://example0.comhttp://example1.com

祝你好运!

相关内容