问题
系统允许通用访问 php 应用程序“owncloud”。也就是说,允许访问整个网络的服务器。作为测试,“要求全部拒绝”不控制访问。
这个配置中缺少什么来限制对服务器主机的访问?
其他想法
hpptd.conf 是否也需要更改配置?这是 owncloud.conf 问题还是 httpd.conf 问题?这些症状是否与 php.conf 有关?
眼镜
Fedora 21
- httpd
- mod_ssl 级别 2.4.16
- 作为达到此点的过程的一部分,htaccess 文件已被重命名。
- /etc/httpd/conf/httpd.conf 文件是标准的。
/etc/httpd/conf.d/owncloud.conf 文件:
<VirtualHost *:443>
ServerName owncloud
ServerAlias owncloud
DocumentRoot /var/www/html/owncloud
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/owncloud.pem
SSLCertificateKeyFile /etc/httpd/ssl/owncloud.key
<Directory /var/www/http/owncloud>
Options +Indexes +FollowSymLinks
AllowOverride All
Require local
<IfModule mod_php5.c>
php_value upload_max_filesize 512M
php_value post_max_size 512M
php_value memory_limit 512M
php_value mbstring.func_overload 0
</IfModule>
<IfModule pagespeed_module>
</IfModule>
RewriteEngine on
RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization},last]
RewriteRule ^\.well-known/carddav /remote.php/carddav/ [R]
RewriteRule ^\.well-known/caldav /remote.php/caldav/ [R]
</Directory>
</VirtualHost>
答案1
如果您的服务器允许流量进入,尽管有 和Require local
,尤其是Require all denied
,那么这是一个 apache/httpd 问题。它要么是覆盖(例如 .htaccess),要么是正在加载另一个配置文件。Apache 将根据最具体列出的目录。例如:将 /var/www/http/owncloud 设置为Require local
,如果您将 /var/www/http/owncloud/theRealServerRoot 设置为Require all granted
,那么每个人都可以访问“theRealServerRoot”中的任何内容,尽管他们被拒绝访问父目录。您可能已经知道这一点,但以防万一。此外,如果两个配置文件使用语句引用同一个目录<directory>
,则加载的配置文件最后的将适用。加载通常按字母顺序进行。如果您有一个“security.conf”文件,其中定义了Require
/var/www/http/owncloud 的替代语句,那么将使用这些语句代替 owncloud.conf 中的任何内容。
1)您能否仔细检查一下,在重命名 .htaccess 文件后,owncloud 是否没有重新创建这些文件?
2) conf.d 目录中还有哪些其他文件?您可以检查它们是否正在作用于该目录吗?
3) 另外,您发布的文件适用于 https;您正在测试针对 https:// URL 的访问,对吗?因为 http:// URL 可能有一组不同的规则。
4) 最后,但最不可能的是,您是否使用了反向代理或负载平衡器?这两者都会改变 apache/httpd 将看到的 IP 地址,并且如果在同一台服务器上运行,会产生相同的问题(尽管当您写入该Require all denied
行时它仍会被阻止)。