我在本地主机上设置了 2 个站点。一个位于 localhost:8197,另一个位于 fc.localhost:8197 当然,为了使其正常工作,我编辑了 /etc/hosts 文件以包含
fc.localhost 127.0.0.1
因此,这些分别是我针对每个站点的配置:
000-default.conf(站点位于本地主机):
<VirtualHost *:8197>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/html/>
Options +Indexes +FollowSymLinks +ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
fc.conf(站点位于fc.localhost):
<VirtualHost *:8197>
ServerAdmin webmaster@localhost
DocumentRoot /home/alex/Documents/fc/Website/fc/html
ServerName fc.localhost
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /home/alex/Documents/fc/Website/fc/html>
Options +Indexes +FollowSymLinks +ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
假设我的本地 IP 地址是 10.8.210.51,本地网络中的某台 PC 在浏览器的地址栏中输入 10.8.210.51:8197,那么我这边的 apache 将为第一个站点 (localhost) 提供服务,而不会为第二个站点 (fc.localhost) 提供服务。如果我在地址栏 (服务器端) 中输入 127.0.0.1:8197,也会发生同样的事情。
因此,我的问题是,出于明确的兴趣,Apache 如何决定为哪个站点提供服务以及我如何改变这种行为?
答案1
答案2
这称为“基于名称的虚拟主机”,描述这里: