问题:我在/ var / www / files /下有一些文件,我希望它们可以从特定的IP地址访问,而不需要用户/密码。 但是,我希望任何其他IP地址都应该要求login才能获得访问权限。
这是在我的httpd.conf中:
<Directory /var/www/files/> Order deny,allow Deny from all Allow from 192.168 AuthUserFile /etc/apache2/basic.pwd AuthName "Please enter username and password" AuthType Basic Require user valid-user </Directory>
但是,如果我理解正确,这意味着来自192.168。*的任何客户端都将有权访问该目录,但是将需要有效用户查看其内容。 而其他IP地址将被拒绝。 对?
先谢谢你。
编辑 :这可能是被接受的答案,但是老了。 对于新的Apache安装, 在这里使用Brians的答案
添加: Satisfy Any
(这意味着这两个应该通过)。
而语法是:
Require valid-user
要么:
Require user <userid>
这是如何完成的Apache 2.4 +(因为Satisfy Any
不再支持)。
<Directory /var/www/files/> AuthType Basic AuthName "Please enter your username and password" AuthUserFile /var/www/files/.htpasswd <RequireAny> Require ip 22.33.44.55 Require valid-user </RequireAny> </Directory>
如果要同时输入IP地址和Login / Password, <RequireAny>
<RequireAll>
更改为<RequireAll>
我希望这能帮助别人 – 因为花了我一段时间才弄明白。
如果您的服务器位于代理之后,则不能直接依赖Require ip
。 但是,您可以使用Require env
:
<Directory /var/www/files/> AuthType Basic AuthName "Please enter your username and password" AuthUserFile /var/www/files/.htpasswd SetEnvIF X-Forwarded-For "22.33.44.55" AllowIP <RequireAny> Require env AllowIP Require valid-user </RequireAny> </Directory>
这个想法的来源
SetEnvIF X-Forwarded-For "192.168.135.159" AllowIP SetEnvIF X-Forwarded-For "192.168.135.135" AllowIP AuthType Basic AuthName "admin" AuthUserFile "/var/www/domain.com/cms/.htpasswd" <RequireAll> Require env AllowIP require valid-user </RequireAll>
我也检查了许多变种。 这个代码üorks与2.4版本的Apache 100%