[英]apache2 : how to allow access from a file
我想根据某些IP限制对文件夹的访问。
我已经知道该怎么做
<Directory "/path/to/my/directory/">
Order Deny,Allow
Deny from all
Allow from 123.123.123.1 # IP 1
Allow from 123.123.123.2 # IP 2
Allow from 127
</Directory>
由于我想以不同的方式管理允许的IP列表,因此我希望从文本文件中允许它们,其中IP可能是这样的:
123.123.123.1
123.123.123.2
有人知道该怎么做吗? 如果那是不可能的,还有另一种方法来做这种事情吗?
PS:为了使所有内容清晰明了,我的最终目的是获取连接到本地VPN(OpenVPN)的IP,使用IP完成一个文件(如果尚未包含),然后重新启动apache2以便它可以考虑它们。 有点奇怪,但是在同一台服务器上,我有html内容,我只想由vpn用户访问。 但是即使我通过vpn,apache2也会看到远程IP地址而不是端点一个...
您不能像您想要的那样在apache配置中包括其他文件,但是您可以使用mod_rewrite的RewriteMap指令来使用映射文件或运行脚本。
例如,您可以创建地图:
RewriteMap allow_ips txt:/path/to/ipfile.txt
然后在/path/to/ipfile.txt
中
123.123.123.1 1
123.123.123.2 1
123.123.123.4 1
123.123.123.10 1
然后在目录容器中:
RewriteCond $ {allow_ips:%{REMOTE_ADDR} | 0}上的RewriteEngine 0 RewriteRule ^-[L,F]
正在以下条件中使用该映射: ${allow_ips:%{REMOTE_ADDR}|0}
。 如果远程地址位于/path/to/ipfile.txt
,则映射将返回“ 1”,否则它将返回“ 0”,这将满足条件,并且该规则将拒绝访问。
这种映射的问题是,每个IP的末尾都需要有一个非“ 0”的东西(以便形成一个映射)。
另一种选择是编写脚本并使用prg
映射类型。 该脚本将在另一个文件中查找IP,并返回适当的“ 1”或“ 0”。 这是轻量级的,因为脚本将每次运行,而不是缓存的映射文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.