我参加了 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