我一直尝试在 Virtualbox 中将 Ubuntu Desktop 32bit 设置为基于名称的虚拟主机,但没有成功。虚拟主机的 IP 地址是 192.168.0.105。
文档根目录/var/www/example1.com/public_html/index.html
是/var/www/example2.com/public_html/index.html
配置文件/etc/apache2/sites-available/example1.com.conf
是
/etc/apache2/sites-available/example2.com.conf
内容example1.com.conf
<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>
内容example2.com.conf
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName example2.com
ServerAlias www.example2.com
DocumentRoot /var/www/example2.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
内容/etc/hosts
192.168.0.105 example1.com
192.168.0.105 example2.com
我已使用禁用默认配置文件a2dissite
并启用example1.com.conf
并example2.com.conf
使用a2ensite
然后重新加载 apache2。
每当我输入 example2.com 或 example1.com 时,浏览器都不会将我带到配置的网站,但当我输入服务器 IP 地址时,它会起作用,但只会指向 example1.com。在这方面的任何帮助都将受到深深的尊重和高度赞赏。
答案1
您的配置看起来不错。我猜您没有发出a2ensite
:
该目录/etc/apache2/sites-available
仅保存(的集合)可用的网站。实际上使能够他们,你需要运行
a2ensite example1.com.conf
a2ensite example2.com.conf
systemctl reload apache2
前两个命令只不过在目录中创建指向/etc/apache2/sites-enabled
目录中相应文件的符号链接sites-available
:
root@myhost:/etc/apache2# ll sites-enabled/
...
lrwxrwxrwx 1 root root 35 Mär 9 19:06 000-default.conf -> ../sites-available/000-default.conf
lrwxrwxrwx 1 root root 35 Mär 18 16:48 example1.com.conf -> ../sites-available/example1.com.conf
lrwxrwxrwx 1 root root 35 Mär 18 16:48 example2.com.conf -> ../sites-available/example2.com.conf
Apache 读取文件/etc/apache2/sites-enabled
并忽略/etc/apache2/sites-available
。一般思路是:
- 将所有虚拟主机配置文件放入
sites-available
a2ensite $config_file
使用或打开或关闭它们a2dissite $config_file
。
请注意,自动完成通常有效,即a2ensite ex
TABTAB列出以 开头的可用配置ex
。
之后a2ensite
,a2dissite
您需要通过发出 来让 apache 知道这一点systemctl reload apache2
。命令将告诉您一些相关内容。