我有一个服务器,托管多个网站,并且可以使用基于名称的 apache 虚拟托管进行区分。
如何设置,以便在地址栏中输入我的服务器 IP 时托管特定网站?
您要使用的是
_default_
VirtualHost
。
<VirtualHost _default_:80>
DocumentRoot /www/default80
# ...
</VirtualHost>
有描述这里。基本上,如果没有其他内容与请求匹配,则将使用
_default_
主机。
编辑
这也可以写成:
<VirtualHost *>
DocumentRoot /www/default
# ...
</VirtualHost>
重要的是,这是配置中的第一个
VirtualHost
,因为 Apache 将开始从上到下匹配它们,根据 ServerName
和 ServerAlias
选择最适合的一个。
这篇文章可能也会引起您的兴趣: Apache 默认虚拟主机
只需在您的
Include sites-enabled/
文件中找到 apache2.conf
行,然后将您想要作为站点默认值的 conf 文件的路径添加到其上方。来自:
Include sites-enabled/
到
Include sites-enabled/mydefault.conf
Include sites-enabled/
保持干净,不要删除或编辑
/etc/apache2/sites-available/
中的任何内容。
在 /etc/apache2/sites-available/
中
创建所有新站点配置。 复制您想要启用的任何站点配置到
/etc/apache2/sites-enabled/
。只需确保 /etc/apache2/sites-enabled/
只有一个配置文件。
Ubuntu 20.04 LTS 中新的 apache 站点配置的示例格式是
<VirtualHost *:80>
ServerName http://localhost
ServerAdmin [email protected]
DocumentRoot /var/www/html/mysiteroot/public
<Directory /var/www/html/mysiteroot>
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
请注意,
000-default.conf
默认位于上述两个目录中,只能用/etc/apache2/sites-enabled/
中的新配置替换,以便在需要时可以随时恢复。
进行任何配置更改后重新启动 Apache2 服务。
第一次安装apache2时,有一个名为
000-default.conf
的站点配置文件。这将是默认值,因为它很可能首先出现在 /etc/apache2/sites-enabled
下的文件列表中。
要将您自己的文件作为默认文件,您可以将
/etc/apache2/sites-available/000-default.conf
下的文件替换为您自己的文件,或替换链接,如下所示:
sudo rm /etc/apache2/sites-enabled/000-default.conf
sudo ln -s ../sites-available/my-site-setup.conf /etc/apache2/sites-enabled/000-default.conf
然后重新启动 apache2(或者只是重新加载)。
另一个答案提到的
_default_
用于定义可以使用默认IP地址找到的虚拟主机。它不是默认的虚拟主机。
<VirtualHost _default_:80>
...
相当于
<VirtualHost *:80>
...
*
是匹配任何 IP 地址的全局模式。
注:
替换
000-default.conf
文件是可以的,但在大多数情况下,安装包会将其视为修改后的文件并以某种怪异方式管理它,这就是为什么我认为仅更改软链接更干净。
许多服务器没有单一的配置文件,而是有多个针对各种虚拟主机的特定于主机的配置文件,组织如下:
/etc/apache2/
site_available(实际配置文件)
site_enabled(指向sites_available中文件的符号链接)
为了在通过共享 IP 地址访问时首先加载特定的虚拟主机配置,请将符号链接(仅)重命名为排序时第一个的名称,例如 00-default 原来是:
站点-可用示例:
lrwxrwxrwx 1 root root 41 七月 27 2019 00_yourdomain.com.conf -> ../sites-available/yourdomain.com.conf
lrwxrwxrwx 1 root root 45 七月 27 2019 00_yourdomain.com.ssl.conf -> ../sites-available/yourdomain.com.ssl.conf
*** 这是一个“干净”、易于解释、简单的方法,(重要的是)不涉及 apache2.config 文件!
这可以通过将 Vhost 配置文件中的服务器名称设置为 ServerName 处的本地服务器 IP 地址,并指向包含要在 DocumentRoot 处提供服务的所需文件的正确文件夹来实现。与往常一样,重新启动 Apache 以激活新配置。 这假设所考虑的 IP 地址是本地 IP 地址。
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/var/www/base_folder/dummy_default_folder"
ServerName 192.168.X.XX #the key entry, your local server IP address
ServerAlias example.server.com
ErrorLog "/var/log/httpd/example.error_log"
CustomLog "/var/log/httpd/example.access_log" common
</VirtualHost>
经过测试,可以在 Apache/2.4.37 (rocky) 中工作