我在我们的一台开发服务器上共同托管了一组网站。
我需要为所有这些网站配置
Allow from
指令。由于这是关于动态 IP 的,这些 IP 变化得相对频繁,因此我需要设置一种方法来轻松修改它们。
例子:
<VirtualHost *:443>
ServerName dbhost.domain
ServerAdmin webmaster@domain
DocumentRoot /srv/www/dbhost
DirectoryIndex index.php index.php3 index.php4
SSLEngine On
<Directory /srv/www/dbhost>
order deny,allow
allow from 192.168.0.0/16 <subnet1> <subnet2> <subnet3> <etc...>
deny from all
AllowOverride None
AuthType Digest
AuthDigestAlgorithm MD5
AuthName "devs"
AuthDigestDomain /
AuthDigestDomain /
AuthDigestProvider file
AuthUserFile <pwdfile>
Require valid-user
<Directory>
所以,我想将“order/allow”包含在外部文件中,这样我就可以轻松地将它用于所有配置文件并只需更改一次即可。
因此,我创建了一个包含以下行的新文件:
order deny,allow
allow from 192.168.0.0/16 <subnet1> <subnet2> <subnet3> <etc...>
deny from all
然后,我修改了该指令如下:
<Directory /srv/www/dbhost>
Include /fullpath/to/acl.conf
AllowOverride None
但是apachectl -t报错:
apache2ctl -t
Syntax error on line 1 of /fullpath/to/acl.conf:
order not allowed here
那么,还有其他方法可以做到这一点吗?
答案1
这种方法没问题。它会像那样工作。问题可能是因为您的 Apache 按原样解释此文件 (acl.conf)(而不仅仅是作为包含文件),因为它具有 .conf 扩展名 - 您可能在或Include *.conf
中的某个地方有。httpd.conf
apache.conf
将文件的名称更改为例如 acl.include 就可以了。