在 Linode 上配置基于名称的虚拟主机?

在 Linode 上配置基于名称的虚拟主机?

我正在学习为 apache 2 配置基于名称的虚拟主机。

现在,我的域名http://我的域名.com 指向 /var/www/index.html。我希望它指向我新创建的 /srv/www/mydomain.com/public_html/index.html。

我目前有两个文件:

  • /etc/apache2/站点可用/默认
  • /etc/apache2/sites-available/mydomain.com

它们看起来是这样的:

/etc/apache2/站点可用/默认

NameVirtualHost myipaddr:80

<VirtualHost myipaddr:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
## other default directives
</VirtualHost>

/etc/apache2/sites-available/mydomain.com

<VirtualHost *:80>
     ServerAdmin [email protected]
     ServerName mydomain.com
     ServerAlias www.mydomain.com
     DocumentRoot /srv/www/mydomain.com/public_html/
     ErrorLog /srv/www/mydomain.com/logs/error.log
     CustomLog /srv/www/mydomain.com/logs/access.log combined
</VirtualHost>

我执行了 a2ensite mydomain.com 并重新启动了 apache,但是http://我的域名.com仍然指向默认的 /var/www/ 目录。我猜 apache 没有注册我的 /etc/apache2/sites-available/mydomain.com 文件?

我是否错过了配置和安装的某个步骤?

答案1

我不确定这是否是问题所在,但首先出现的问题是您在 NameVirtualHost 设置中使用了 IP,并且在 mydomain.com 中使用了通配符。您可能应该在 NameVirtualHost 和默认虚拟主机中使用通配符。

答案2

  • 您应该为“默认”设置一个不同的名称

ServerName 不是 www.mydomain.com

  • 您还可以将所有 NameVirtualHost 和 VirtualHost 设置为 *:80,以保证配置的统一性

相关内容