Apache通用文档根目录,不同的虚拟主机,不同的可访问文件

Apache通用文档根目录,不同的虚拟主机,不同的可访问文件

我参加了 LFCE 考试,并提出了一个问题。问题要求安装 apache2 和 2 个虚拟主机。 site1.example.com 和 site2.example.com。两个虚拟主机共享文档根目录/var/www/html/。。还要求在文档根目录中有 2 个不同的文件。 test_page1.html 和 test_page2.html 并请求文件 test_page1.html 只能从 site1.example.com 虚拟主机访问,而 test_page2.html 只能从 site2.example.com 访问。

我的问题是如何确保 test_page1.html 无法从虚拟主机 2 访问,反之亦然(如果它们共享相同的文档根目录)。

虚拟主机1

<VirtualHost *:80>
ServerName site1.example.com
DocumentRoot /var/www/html/
<Directory /var/www/html/> 
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

虚拟主机2

<VirtualHost *:80>
ServerName site2.example.com
DocumentRoot /var/www/html/
<Directory /var/www/html/> 
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

答案1

我将回答我的问题以供将来参考。它可以通过组合来完成地点堵塞,常用表达服务器变量

创建一个新的配置文件

nano /etc/apache2/sites-available/secure.conf

添加:

<Location /test_page1.html>
    <If "!(%{SERVER_NAME} -strmatch 'site1.example.com*')">
    Require all denied
    </If>
</Location>
<Location /test_page2.html>
    <If "!(%{SERVER_NAME} -strmatch 'site2.example.com*')">
    Require all denied
    </If>
</Location>

启用配置并重新启动 apache:

 a2ensite secure
 systemctl restart apache2

相关内容