我已经在我的Raspberrypi上安装了一个NextCloud。我想在我的本地网络中使用它进行文件传输,并在任何地方进行联系人和日历。
我的Nextcloud位于/var/www/html/nextcloud
。我还创建了一个文件/etc/apache2/sites-available/nextcloud.conf
来启用虚拟主机。基本上:
<VirtualHost *:80>
DocumentRoot /var/www/html/nextcloud/
ServerName nextcloud.example.com
<Directory /var/www/html/nextcloud/>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
<IfModule mod_dav.c>
Dav off
</IfModule>
</Directory>
SetEnv HOME /var/www/html/nextcloud
SetEnv HTTP_HOME /var/www/html/nextcloud
</VirtualHost>
可通过以下链接访问nextcloud:
192.168.2.100/nextcloud
nextcloud.example.com
example.com/nextcloud
我的问题:是否有办法禁止通过example.com/nextcloud
访问?
我试着将deny, allow
条目添加到/var/www/html/nextcloud/.htaccess
中。但是要么我阻塞太多,要么它不工作。感谢帮助。
1条答案
按热度按时间sxpgvts31#
example.com/nextcloud
之所以可以访问,是因为您将子域指向了主域文档根目录之外的子目录(如主域VirtualHost中所定义)。如果子域是一个完全独立的实体,那么最好将其指向主域文档根目录之外的区域。我尝试在
/var/www/html/nextcloud/.htaccess
中添加deny,allow条目如果要在
.htaccess
中阻止此操作(与主域的vHost配置相反),那么您需要检查请求的Host
头。即nextcloud.example.com
以外任何内容(因此它也会拦截透过IP位址的要求)。而不是检查您要拦截的主机名称。您可以使用mod_rewrite来执行此作业,例如:对于任何请求的
Host
报头 * 不是 *(如!
前缀所表示的)nextcloud.example.com
的请求,上面的代码以“403 Forbidden”响应。您也可以在主域的vHost容器(而不是子域)中阻止此子目录。因此,它仅适用于对
example.com
的请求。例如:请注意,
Order
、Allow
和Deny
是Apache 2.2指令,以前在Apache 2.4上已弃用。您应该在Apache 2.4上使用Require
(mod_authz_core)。