繁体   English   中英

apache2:如何允许从文件访问

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM